C# asp Aspose.Cells 教程,包含增加勾选框,单元格,字体设置

摘要:
///这样,上面就会出现一行“注:此表……”。如果不合并两行,请使用一行,您会发现这行从未出现过。

1,引用Aspose.Cells  dll

2,using Aspose.Cells;

3,

C# asp Aspose.Cells 教程,包含增加勾选框,单元格,字体设置第1张C# asp Aspose.Cells 教程,包含增加勾选框,单元格,字体设置第2张
Workbook excel = new Workbook();
string strFilePath = System.Web.HttpContext.Current.Server.MapPath("~/File/ExportTemplate/test.xls");
 //建立excel并打开模板文件,这种先定义好模板,然后再在模板上进行填写数据
excel.Open(strFilePath);
Worksheet sheet = excel.Worksheets["Sheet1"];

 Style styleAlignment = excel.Styles[excel.Styles.Add()];
                styleAlignment.VerticalAlignment = Aspose.Cells.TextAlignmentType.Top;
                styleAlignment.HorizontalAlignment = Aspose.Cells.TextAlignmentType.Left;

///……………………………………………………这里省略获取数据代码————————

 DataTable dtDetail = PubMethod.GetPagedData(strPro, htDetail, 1000000, 1).Tables[1];
                //设置表头值
                sheet.Cells[1, 0].PutValue("销税" + dtDetail.Rows[0]["DOME_NO"] + "");
                sheet.Cells[2, 0].PutValue("企业名称:" + strCompNo);//企业名称
                sheet.Cells[2, 4].PutValue("加工贸易手册号:" + strHbNo);//加工贸易手册号
                DataTable dtTmp = new DataTable();
                for (int i = 0; i < 9; i++)
                {
                    dtTmp.Columns.Add(i.ToString());
                }
                for (int i = 0; i < dtDetail.Rows.Count; i++)
                {
                    DataRow dr = dtTmp.NewRow();
                    dr[0] = dtDetail.Rows[i]["G_NO"];
                    dr[1] = dtDetail.Rows[i]["G_NAME"];
                    dr[2] = dtDetail.Rows[i]["G_CODE"];
                    dr[3] = dtDetail.Rows[i]["ELEMENT"];
                    dr[4] = dtDetail.Rows[i]["SUMQTY"];
                    dr[5] = dtDetail.Rows[i]["UNIT"];
                    dr[6] = dtDetail.Rows[i]["PRICE"];
                    dr[7] = dtDetail.Rows[i]["TOTAL_PRICE"];
                    dr[8] = dtDetail.Rows[i]["CURR"];
                    dtTmp.Rows.Add(dr);
                }
                dtTmp.AcceptChanges();
                if (dtTmp.Rows.Count > 0)
                {
                    sheet.Cells.ImportDataTable(dtTmp, false, 5, 0, dtTmp.Rows.Count, 9, false, "", true);
                }
                //合计栏位
                sheet.Cells[dtDetail.Rows.Count + 5, 1].PutValue("合计:");
                sheet.Cells[dtDetail.Rows.Count + 5, 1].Style.Font.IsBold = true;
                sheet.Cells[dtDetail.Rows.Count + 5, 1].Style.HorizontalAlignment = Aspose.Cells.TextAlignmentType.Center;
                Decimal[] arrDecimal = { 0, 0 };
                for (int i = 0; i < dtDetail.Rows.Count; i++)
                {
                    arrDecimal[0] += Convert.ToDecimal(dtDetail.Rows[i]["SUMQTY"]);
                    arrDecimal[1] += Convert.ToDecimal(dtDetail.Rows[i]["TOTAL_PRICE"]);
                }
                sheet.Cells[dtDetail.Rows.Count + 5, 4].PutValue(arrDecimal[0]);
                sheet.Cells[dtDetail.Rows.Count + 5, 7].PutValue(arrDecimal[1]);
                sheet.Cells[dtDetail.Rows.Count + 5, 4].Style.Font.IsBold = true;
                sheet.Cells[dtDetail.Rows.Count + 5, 7].Style.Font.IsBold = true;

                Style styleAlignment = excel.Styles[excel.Styles.Add()];
                styleAlignment.VerticalAlignment = Aspose.Cells.TextAlignmentType.Top;
                styleAlignment.HorizontalAlignment = Aspose.Cells.TextAlignmentType.Left;
                styleAlignment.Font.Size = 8;             
                sheet.Cells[dtDetail.Rows.Count + 6, 0].PutValue("加工贸易部门批注意见:");
                ///设高度
                sheet.Cells.SetRowHeight(dtDetail.Rows.Count + 8, 10);
                sheet.Cells.SetRowHeight(dtDetail.Rows.Count + 9, 10);
                /// *******这里很重要,非学重要***:
                /// 这里要+8,+9两行合并一下,然后下面只对+9和+11行进行样式调整System.Drawing.Color.White,让它的线变白。
                /// 这样才会有“注:本表格……”上面那条线,如果不合并两行,就用一行,就会发现这条线一直不出现。
                Range r2 = sheet.Cells.CreateRange(sheet.Cells[dtDetail.Rows.Count + 8, 0].Name, sheet.Cells[dtDetail.Rows.Count + 9, 8].Name);
                r2.Merge();
                //样式调整,把黑边线去掉
                for (int i = 1; i < 8; i++)
                {
                    sheet.Cells[dtDetail.Rows.Count + 6, i].Style.Borders.SetColor(System.Drawing.Color.White);
                    sheet.Cells[dtDetail.Rows.Count + 7, i].Style.Borders.SetColor(System.Drawing.Color.White);
                    sheet.Cells[dtDetail.Rows.Count + 8, i].Style.Borders.SetColor(System.Drawing.Color.White);
                }
                //自适应行高                
                sheet.AutoFitRows();                
                Style styleLeft = excel.Styles[excel.Styles.Add()];
                styleLeft.Borders[BorderType.LeftBorder].Color = System.Drawing.Color.Black;
                styleLeft.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin;
                Style styleRight = excel.Styles[excel.Styles.Add()];
                styleRight.Borders[BorderType.RightBorder].Color = System.Drawing.Color.Black;
                styleRight.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin;
                sheet.Cells[dtDetail.Rows.Count + 6, 0].Style = styleLeft;
                sheet.Cells[dtDetail.Rows.Count + 6, 0].Style.Font.Size = 8;
                sheet.Cells.SetRowHeight(dtDetail.Rows.Count + 6, 110);
                sheet.Cells[dtDetail.Rows.Count + 6, 0].Style.VerticalAlignment = Aspose.Cells.TextAlignmentType.Top;                
                sheet.Cells[dtDetail.Rows.Count + 7, 0].Style = styleLeft;
                sheet.Cells[dtDetail.Rows.Count + 8, 0].Style = styleLeft;
                sheet.Cells[dtDetail.Rows.Count + 7, 4].PutValue("签字:");
                sheet.Cells[dtDetail.Rows.Count + 7, 7].PutValue("日期:");
                sheet.Cells[dtDetail.Rows.Count + 7, 4].Style = styleAlignment;
                sheet.Cells[dtDetail.Rows.Count + 7, 7].Style = styleAlignment;
                sheet.Cells[dtDetail.Rows.Count + 6, 8].Style = styleRight;                
                sheet.Cells[dtDetail.Rows.Count + 7, 8].Style = styleRight;
                sheet.Cells[dtDetail.Rows.Count + 8, 8].Style = styleRight;
                //单元格外文字设置
                Range r6 = sheet.Cells.CreateRange(sheet.Cells[dtDetail.Rows.Count + 10, 0].Name, sheet.Cells[dtDetail.Rows.Count + 10, 8].Name);
                r6.Merge();
                sheet.Cells[dtDetail.Rows.Count + 10, 0].PutValue("注:本表格一式三份: 一份通关部门留存, 一份加工贸易部门留存, 一份企业留存.");
                sheet.Cells[dtDetail.Rows.Count + 10, 0].Style.HorizontalAlignment = Aspose.Cells.TextAlignmentType.Left;
                for (int i = 0; i < 9; i++)
                {
                    sheet.Cells[dtDetail.Rows.Count + 10, i].Style.Borders.SetColor(System.Drawing.Color.White);
                }
具体代码 有部分注释

4,上面的代码最后显示的格式是这样的,见下图:

C# asp Aspose.Cells 教程,包含增加勾选框,单元格,字体设置第3张

5,最终转民PDF打印是这样的,见下图:
C# asp Aspose.Cells 教程,包含增加勾选框,单元格,字体设置第4张

6,注意:这边做样式的时候一定要注意不要将上面的样式给覆盖了。

  如果对+6,0已经做了一些样式,然后再用下面这个语句,+6,0的样式将被改写,样式就只能是styleLeft对应样式了。

  sheet.Cells[dtDetail.Rows.Count + 6, 0].Style = styleLeft;

7,增加勾选框

  到目前为止我看网上没有特别好的解决方法,有些人说直接插入一个图片,那么有兴趣的同学可以去试一下。

做了之后你们发现,如果你用模板做的你插入的那个图片就是浮在excel里面。如果你最终要以pdf打印出来,那么你会发现样式没法调,很不好看。

好那么我这边用一个很简单的方法让大家实现文本框加勾。

  一,首先我做好一个excel打印的模板,然后在右边(非打印区域)增加待插入内容。

    内容:输入一个R,对就是大写的R,然后字体设成“Wingdings 2” 然后再写上“是”和插入一个特殊字符(没勾选的框),再写上一个否最终就是C# asp Aspose.Cells 教程,包含增加勾选框,单元格,字体设置第5张(设这个放在3,18单元格中)

    当然还要在另一个单元格里做一个选择否的。C# asp Aspose.Cells 教程,包含增加勾选框,单元格,字体设置第6张(设这个放在3,19单元格中)

  二,根据数据中实际勾选内容,将第一步对应的单元格复制到你要填入值的单元格中。

    

    
    例:现在的要实际选择了“是”,且要将值放到cell[3,8]中,那么代码如下:
    sheet.Cells[3, 8].Copy(sheet.Cells[3,18]);
  
  三,然后最后再用代码将第一步增加的待插入内容,这样打印出来就是我们要的那个模板的样式。且有勾选框。
7,Aspose.Cells如何设置单元格数字和日期的显示格式
//Getting the Style of the A1 Cell
Style style = worksheet.Cells["A1"].GetStyle();
//Setting the display format to number 15 to show date as "d-mmm-yy"
style.Number = 15;
C# asp Aspose.Cells 教程,包含增加勾选框,单元格,字体设置第7张C# asp Aspose.Cells 教程,包含增加勾选框,单元格,字体设置第8张
Aspose.Cells提供的内嵌显示格式:
Value    Type    Format String
0    General    General
1    Decimal    0
2    Decimal    0.00
3    Decimal    #,##0
4    Decimal    #,##0.00
5    Currency    $#,##0;$-#,##0
6    Currency    $#,##0;[Red]$-#,##0
7    Currency    $#,##0.00;$-#,##0.00
8    Currency    $#,##0.00;[Red]$-#,##0.00
9    Percentage    0%
10    Percentage    0.00%
11    Scientific    0.00E+00
12    Fraction    # ?/?
13    Fraction    # /
14    Date    m/d/yy
15    Date    d-mmm-yy
16    Date    d-mmm
17    Date    mmm-yy
18    Time    h:mm AM/PM
19    Time    h:mm:ss AM/PM
20    Time    h:mm
21    Time    h:mm:ss
22    Time    m/d/yy h:mm
37    Currency    #,##0;-#,##0
38    Currency    #,##0;[Red]-#,##0
39    Currency    #,##0.00;-#,##0.00
40    Currency    #,##0.00;[Red]-#,##0.00
41    Accounting    _ * #,##0_ ;_ * "_ ;_ @_
42    Accounting    _ $* #,##0_ ;_ $* "_ ;_ @_
43    Accounting    _ * #,##0.00_ ;_ * "??_ ;_ @_
44    Accounting    _ $* #,##0.00_ ;_ $* "??_ ;_ @_
45    Time    mm:ss
46    Time    h :mm:ss
47    Time    mm:ss.0
48    Scientific    ##0.0E+00
49    Text    @
Aspose.Cells提供的内嵌显示格式
    

免责声明:文章转载自《C# asp Aspose.Cells 教程,包含增加勾选框,单元格,字体设置》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MySQL 5.6 解决InnoDB: Error: Table "mysql"."innodb_table_stats" not found.问题Unity在UI界面上显示3D模型/物体,控制模型旋转下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用Java创建Excel,并添加内容

使用Java创建Excel,并添加内容 一、依赖的Jar包 jxl.jar,使用jxl操作Excel   Jxl是一个开源的Java Excel API项目,通过Jxl,Java可以很方便的操作微软的Excel文档。除了Jxl之外,还有Apache的一个POI项目,也可以操作Excel,两者相比之下:Jxl使用方便,但功能相对POI比较弱。POI使用复杂。...

Delphi下EasyGrid使用体会

最近在编写软件的时候,非常需要一款支持多表头的StringGrid控件,朋友介绍使用EasyGrid控件,这款控件大概从04年开始就没有再更新,网上有关与它的资料也较少。但是通过其demo,此软件还是能满足需要,由于资料少,所以将自己在使用过程中的一些体会整理出来。 一、多表头合并 在EasyGrid中提供了SetMerges方法用于多表头合并,该方法原型...

Excel透视表基础之数据源、创建、基本术语、基本操作

数据源的基本要求: 每列数据的第一行包含该列标题 不能包含空行或空列 不能包含空单元格 不能包含合并单元格 不能包含同类字段 如果包含空行、空列则删除空行和空列。如果包含空单元格则填充空单元格。 如果包含合并单元格则将合并单元格取消,并将取消后的空单元格填充。方法:选择第一行、按着shift选择最后一行Ctrl + G定位空值,输入“=向上的单元格”...

WPF如何获得ListView内各单元格控件

------------------首先不推荐这种模式ItemsSource 已经绑定了源. Items 集合的数量变化很随机, 每个单元格的控件取决於  默认的DataTemplate(设置 DisplayMemberBinding 时) 或者  CellTemplate 定义的控件, 或者  CellTemplateSelector 指定的 Templ...

Bootstrap Table 中文文档(完整翻译版)

表格参数: 名称 标签 类型 默认 描述 - data-toggle String ‘table’ 不用写 JavaScript 直接启用表格。 classes data-classes String ‘table table-hover’ 表格的类名称。默认情况下,表格是有边框的 你可以添加 ‘table-no-bordered’ 来删除...

Aspose.Words转换为PDF的时候字体丢失的问题解决

系统中明明有字体的,Word中显示也正常,就是转换为PDF以后不正常,字体丢失,被替换成了等线字体 好一番研究,终于找到原因 ,原因是WindowsFonts下的文件,有些只是虚拟的路径,真正的字体文件是在C:Users用户名AppDataLocalMicrosoftWindowsFonts 这个目录下,从而导致的这个问题 只要将用户的字体目录添加进去就可...