1,引用Aspose.Cells  dll

2,using Aspose.Cells;

3,

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, , ).Tables[];
//设置表头值
sheet.Cells[, ].PutValue("销税" + dtDetail.Rows[]["DOME_NO"] + "号");
sheet.Cells[, ].PutValue("企业名称:" + strCompNo);//企业名称
sheet.Cells[, ].PutValue("加工贸易手册号:" + strHbNo);//加工贸易手册号
DataTable dtTmp = new DataTable();
for (int i = ; i < ; i++)
{
dtTmp.Columns.Add(i.ToString());
}
for (int i = ; i < dtDetail.Rows.Count; i++)
{
DataRow dr = dtTmp.NewRow();
dr[] = dtDetail.Rows[i]["G_NO"];
dr[] = dtDetail.Rows[i]["G_NAME"];
dr[] = dtDetail.Rows[i]["G_CODE"];
dr[] = dtDetail.Rows[i]["ELEMENT"];
dr[] = dtDetail.Rows[i]["SUMQTY"];
dr[] = dtDetail.Rows[i]["UNIT"];
dr[] = dtDetail.Rows[i]["PRICE"];
dr[] = dtDetail.Rows[i]["TOTAL_PRICE"];
dr[] = dtDetail.Rows[i]["CURR"];
dtTmp.Rows.Add(dr);
}
dtTmp.AcceptChanges();
if (dtTmp.Rows.Count > )
{
sheet.Cells.ImportDataTable(dtTmp, false, , , dtTmp.Rows.Count, , false, "", true);
}
//合计栏位
sheet.Cells[dtDetail.Rows.Count + , ].PutValue("合计:");
sheet.Cells[dtDetail.Rows.Count + , ].Style.Font.IsBold = true;
sheet.Cells[dtDetail.Rows.Count + , ].Style.HorizontalAlignment = Aspose.Cells.TextAlignmentType.Center;
Decimal[] arrDecimal = { , };
for (int i = ; i < dtDetail.Rows.Count; i++)
{
arrDecimal[] += Convert.ToDecimal(dtDetail.Rows[i]["SUMQTY"]);
arrDecimal[] += Convert.ToDecimal(dtDetail.Rows[i]["TOTAL_PRICE"]);
}
sheet.Cells[dtDetail.Rows.Count + , ].PutValue(arrDecimal[]);
sheet.Cells[dtDetail.Rows.Count + , ].PutValue(arrDecimal[]);
sheet.Cells[dtDetail.Rows.Count + , ].Style.Font.IsBold = true;
sheet.Cells[dtDetail.Rows.Count + , ].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 = ;
sheet.Cells[dtDetail.Rows.Count + , ].PutValue("加工贸易部门批注意见:");
///设高度
sheet.Cells.SetRowHeight(dtDetail.Rows.Count + , );
sheet.Cells.SetRowHeight(dtDetail.Rows.Count + , );
/// *******这里很重要,非学重要***:
/// 这里要+8,+9两行合并一下,然后下面只对+9和+11行进行样式调整System.Drawing.Color.White,让它的线变白。
/// 这样才会有“注:本表格……”上面那条线,如果不合并两行,就用一行,就会发现这条线一直不出现。
Range r2 = sheet.Cells.CreateRange(sheet.Cells[dtDetail.Rows.Count + , ].Name, sheet.Cells[dtDetail.Rows.Count + , ].Name);
r2.Merge();
//样式调整,把黑边线去掉
for (int i = ; i < ; i++)
{
sheet.Cells[dtDetail.Rows.Count + , i].Style.Borders.SetColor(System.Drawing.Color.White);
sheet.Cells[dtDetail.Rows.Count + , i].Style.Borders.SetColor(System.Drawing.Color.White);
sheet.Cells[dtDetail.Rows.Count + , 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 + , ].Style = styleLeft;
sheet.Cells[dtDetail.Rows.Count + , ].Style.Font.Size = ;
sheet.Cells.SetRowHeight(dtDetail.Rows.Count + , );
sheet.Cells[dtDetail.Rows.Count + , ].Style.VerticalAlignment = Aspose.Cells.TextAlignmentType.Top;
sheet.Cells[dtDetail.Rows.Count + , ].Style = styleLeft;
sheet.Cells[dtDetail.Rows.Count + , ].Style = styleLeft;
sheet.Cells[dtDetail.Rows.Count + , ].PutValue("签字:");
sheet.Cells[dtDetail.Rows.Count + , ].PutValue("日期:");
sheet.Cells[dtDetail.Rows.Count + , ].Style = styleAlignment;
sheet.Cells[dtDetail.Rows.Count + , ].Style = styleAlignment;
sheet.Cells[dtDetail.Rows.Count + , ].Style = styleRight;
sheet.Cells[dtDetail.Rows.Count + , ].Style = styleRight;
sheet.Cells[dtDetail.Rows.Count + , ].Style = styleRight;
//单元格外文字设置
Range r6 = sheet.Cells.CreateRange(sheet.Cells[dtDetail.Rows.Count + , ].Name, sheet.Cells[dtDetail.Rows.Count + , ].Name);
r6.Merge();
sheet.Cells[dtDetail.Rows.Count + , ].PutValue("注:本表格一式三份: 一份通关部门留存, 一份加工贸易部门留存, 一份企业留存.");
sheet.Cells[dtDetail.Rows.Count + , ].Style.HorizontalAlignment = Aspose.Cells.TextAlignmentType.Left;
for (int i = ; i < ; i++)
{
sheet.Cells[dtDetail.Rows.Count + , i].Style.Borders.SetColor(System.Drawing.Color.White);
}

具体代码 有部分注释

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

5,最终转民PDF打印是这样的,见下图:

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

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

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

7,增加勾选框

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

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

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

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

    内容:输入一个R,对就是大写的R,然后字体设成“Wingdings 2” 然后再写上“是”和插入一个特殊字符(没勾选的框),再写上一个否最终就是(设这个放在3,18单元格中)

    当然还要在另一个单元格里做一个选择否的。(设这个放在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;
Aspose.Cells提供的内嵌显示格式:
Value Type Format String
General General
Decimal
Decimal 0.00
Decimal #,##
Decimal #,##0.00
Currency $#,##;$-#,##
Currency $#,##;[Red]$-#,##
Currency $#,##0.00;$-#,##0.00
Currency $#,##0.00;[Red]$-#,##0.00
Percentage %
Percentage 0.00%
Scientific 0.00E+00
Fraction # ?/?
Fraction # /
Date m/d/yy
Date d-mmm-yy
Date d-mmm
Date mmm-yy
Time h:mm AM/PM
Time h:mm:ss AM/PM
Time h:mm
Time h:mm:ss
Time m/d/yy h:mm
Currency #,##;-#,##
Currency #,##;[Red]-#,##
Currency #,##0.00;-#,##0.00
Currency #,##0.00;[Red]-#,##0.00
Accounting _ * #,##0_ ;_ * "_ ;_ @_
Accounting _ $* #,##0_ ;_ $* "_ ;_ @_
Accounting _ * #,##.00_ ;_ * "??_ ;_ @_
Accounting _ $* #,##.00_ ;_ $* "??_ ;_ @_
Time mm:ss
Time h :mm:ss
Time mm:ss.
Scientific ##0.0E+00
Text @

Aspose.Cells提供的内嵌显示格式

    

C# asp Aspose.Cells 教程,包含增加勾选框,单元格,字体设置的更多相关文章

  1. gridview 一个列勾选框选中,同时选中同一行的另一列勾选框

    <asp:TemplateColumn > <HeaderTemplate> 是否显示 <asp:CheckBox ID="chk_Show" sty ...

  2. Unity关于脚本前面的勾选框

    今天做项目时需要在某个事件条件下禁用某个脚本,但是突然发现这个脚本前面没有勾选框,,,就像这样 网上搜了下,原来是需要在脚本中加上void Start()方法,即使这个方法里什么都没有 void St ...

  3. 在Asp.Net MVC中使用NPOI插件实现对Excel的操作(导入,导出,合并单元格,设置样式,输入公式)

    前言 NPOI 是 POI 项目的.NET版本,它不使用 Office COM 组件,不需要安装 Microsoft Office,目前支持 Office 2003 和 2007 版本. 1.整个Ex ...

  4. 最近遇到的几个问题,关于Unity脚本在Inspector视图中前面没有勾选框的问题

    1.为什么在Inspector视图中有的脚本前面有勾选框,有的脚本前面没有? 当我想要禁用一个脚本时,发现脚本前面没有勾选框,有的却有. 解决办法:在脚本中添加start方法,然后就有勾选框了. 原因 ...

  5. excel中,一系列单元格中包含某一个字段的单元格数量?

    excel中,一系列单元格中包含某一个字段的单元格数量?这个怎么写公式?如:A列单元格A1-A7的内容分别为 A.AB.BC.AC.CD.AD.EA,怎么数这一列中几个单元格的内容包含A字母? 任意单 ...

  6. UNITY5 为什么Inspector视图中脚本前面的勾选框没了

    结果发现了一个奇葩的问题..凡事脚本没有勾选项的,都是因为你的脚本没有Start方法..如果你想让勾选框显示出来,把如下方法加入即可,不信你可以试试.嘿嘿.

  7. 【Unity】脚本选择打勾的勾选框隐藏

    这个问题事实上已经遇到过好几次了.但又没有特别的须要手动勾选,所以也一直都没在意. 今天研究了一下,原来是由于我删除了Start方法...... 所以.仅仅要脚本中没有Start方法,勾选框就会隐藏掉 ...

  8. Selenium之勾选框操作

    勾选框操作:       所谓勾选框,意思是可以勾选一个及以上或全部勾选.勾选框的图标一般都是方形的. 复选框勾选一般分为三种情况: ①勾选单个框,我们直接用元素定位的方式定位到点击即可. ②勾选多个 ...

  9. EasyUi datagrid列表增加复选框

    本文为博主原创,未经允许不得转载 1.增加复选框列 {     field: 'oid',     title: '<input type=\"checkbox\" name ...

随机推荐

  1. Write a beautiful button

    .btn-warning { color: #fff; text-shadow: 0 -1px 0 rgba(0,0,0,0.25); background-color: #faa732; backg ...

  2. Linux下VirtualBox出现kernel driver not installed的解决方法

    今天安装好rhel-server-6.6-i386后,再安装VirtualBox成功,但是再VirtualBox中创建虚拟机的时候出现了“不能为xx虚拟机打开新任务” 并弹出如下的错误信息:

  3. Adobe Edge Animate –修改Edge Commons Spotlight功能,使之能支持播放中国网站视频

    Adobe Edge Animate –修改Edge Commons Spotlight功能,使之能支持播放中国网站视频 版权声明: 本文版权属于 北京联友天下科技发展有限公司. 转载的时候请注明版权 ...

  4. 在Flex4中使用RemoteObjectAMF0来连接fluorine网关 转

    转http://vipnews.csdn.net/newscontent.aspx?pointid=2011_04_21_142132661 RemoteObjectAMF0是一个开源组件,可以很方便 ...

  5. poj 1364 差分约束

    思路:设dis[i]为从0点到第i点的序列总和.那么对于A B gt  k 来讲意思是dis[B+A]-dis[A]>k; 对于A B lt k来讲就是dis[B+A]-dis[A]<k; ...

  6. IP地址计算和划分

    一.      B类地址 范围从128-191(第一串8位二进制10000000~10111111),如172.168.1.1,第一和第二段号码为网络号码,剩下的2段号码为本地计算机的号码.转换为2进 ...

  7. (原创)monitor H3C switch with cacti

    H3C交换机需要做的操作 [H3C]snmp-agent #H3C默认SNMP是关闭的,需要先开启 [H3C]snmp-agent community read public #设置团体名[publi ...

  8. SVN对unity3d项目版本进行管理的不方便问题,研究ing

    unity3d项目版本控制遇到些问题,找了以下资料做参考,现在mark一下,以后慢慢解决,之后总结. Unity开启meta. meta:版本控制文件,在新加入项时,Unity3D会产生一个同名的.m ...

  9. MTKLogger日志记录打开

    MTKLogger在 拨号界面用*#446633#(不同手机可能设置不一样) 向左滑动到Log and Debugging下面有个MTKLogger,点进去 点击右上角进入设置,打开MobileLog ...

  10. 删除mssqlserver表数据,使id从0开始

    ********************************* 注意备份好数据! *************************** 1.删除表数据 delete 表名 2.执行 dbcc c ...