tnblog
首页
视频
资源
登录

DevExpress Spreadsheet加载表格填充数据并求和

9979人阅读 2019/12/2 10:36 总访问:53611 评论:1 收藏:0 手机
分类: DevExpress

当需要导出表格时,我常用的一种是NPOI,另一种就是Spreadsheet,两者的优缺点暂时略过。 当需要导出比较复杂的表格时,可以考虑先把表格模板定义好,然后再去加载这个表格,合并行列、加公式、加边框样式这些都可以在表格中设置,例如,导出如图:

代码:

  1.         public void Run(string FileName, DataTable BalDT)
  2.         {
  3.             try
  4.             {
  5.                 //创建Spreadsheet并加载指定模板
  6.                 DevExpress.XtraSpreadsheet.SpreadsheetControl spreadsheetControl1 = new DevExpress.XtraSpreadsheet.SpreadsheetControl();
  7.                 spreadsheetControl1.AllowDrop = false;//如果是C/S调用,可以不设置此属性
  8.                 spreadsheetControl1.LoadDocument(HttpContext.Current.Server.MapPath("\\format\\表格.xlsx"));
  9.                 //获取Worksheet
  10.                 Worksheet worksheet1 = spreadsheetControl1.Document.Worksheets[0];
  11.                 if (BalDT.Rows.Count > 0)
  12.                 {
  13.                     worksheet1.Cells[1, 2].Value = BalDT.Rows[0]["CangKuNo"].ToString();
  14.                     worksheet1.Cells[1, 5].Value = BalDT.Rows[0]["Trade_Name"].ToString();
  15.                     worksheet1.Cells[2, 2].Value = BalDT.Rows[0]["StartDate"].ToString() == "" ? "" : Convert.ToDateTime(BalDT.Rows[0]["StartDate"]).ToShortDateString();
  16.                     worksheet1.Cells[2, 5].Value = BalDT.Rows[0]["EndDate"].ToString() == "" ? "" : Convert.ToDateTime(BalDT.Rows[0]["EndDate"]).ToShortDateString();
  17.                     for (int i = 0; i BalDT.Rows.Counti++)
  18.                     {
  19.                         //因为模板中已有两行且设置了公式,填充数据时,可以复制上一行的表格样式
  20.                         if (i < BalDT.Rows.Count - 2)
  21.                         {
  22.                             worksheet1.Rows.Insert(6 + i);
  23.                             worksheet1.Rows[6 + i].CopyFrom(worksheet1.Rows[5 + i], PasteSpecial.Formats);
  24.                         }
  25.                         //填充数据
  26.                         worksheet1.Cells[(5 + i), 0].Value = BalDT.Rows[i]["Putrec_Seqno"].ToString();
  27.                         worksheet1.Cells[(5 + i), 1].Value = BalDT.Rows[i]["PartNo"].ToString();
  28.                         worksheet1.Cells[(5 + i), 2].Value = BalDT.Rows[i]["Name_CN"].ToString();
  29.                         worksheet1.Cells[(5 + i), 3].Value = BalDT.Rows[i]["HSC"].ToString();
  30.                         worksheet1.Cells[(5 + i), 4].Value = BalDT.Rows[i]["Unit_NA"].ToString();
  31.                         worksheet1.Cells[(5 + i), 5].Value = BalDT.Rows[i]["I_AVGPrice_USD"].ToString();
  32.                         worksheet1.Cells[(5 + i), 6].Value = BalDT.Rows[i]["PartNoType"].ToString();
  33.                         worksheet1.Cells[(5 + i), 7].SetValue(BalDT.Rows[i]["BeginStock"]);
  34.                         worksheet1.Cells[(5 + i), 8].SetValue(BalDT.Rows[i]["I_Total"]);
  35.                         worksheet1.Cells[(5 + i), 9].SetValue(BalDT.Rows[i]["E_Total"]);
  36.                         worksheet1.Cells[(5 + i), 10].SetValue(BalDT.Rows[i]["E_ChengPinTotal"]);
  37.                         worksheet1.Cells[(5 + i), 11].SetValue(BalDT.Rows[i]["Last_QTY"]);
  38.                     }
  39.                 }
  40.                 spreadsheetControl1.SaveDocument(FileNameDocumentFormat.Xlsx);
  41.             }
  42.             catch (Exception ex)
  43.             {
  44.                 throw new Exception("表格生成失败," + ex.Message);
  45.             }
  46.         }

效果如下:

总而言之,能用Spreadsheet就用,要比NPOI方便很多,至于他的其他方法属性,可以去看看他的API。

评价
没有个性,不需要签名
排名
44
文章
7
粉丝
4
评论
7
VS2015源文件编码问题
我和代码的故事 : 65001 utf-8
VS2015源文件编码问题
尘叶心繁 : 打开powershellchcp 65001 #设置为utf-8
VS2015源文件编码问题
剑轩 : easy ui ?
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术
无论你接不接受,现实就这么回事,一点也不在乎你怎么想的。