可以用的话,分数不是问题。
不一定要npoi 2.2.0版本,只要可以实现导出为像这个图片这种格式 ,就可以。522830653艾特qq点com
NPOI1.0就带有合并单元格功能,但是使用起来比微软的dll要麻烦一些,
//设置一个合并单元格区域,使用上下左右定义CellRangeAddress区域
你第一行的表头,就可以写成,
sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 26)); //标示从A1到Z1合并
然后赋值给A1(合并后的单元格是按照起始单元格的坐标来的,)
sheet.GetRow(0).GetCell(0).SetCellValue(" XXX统计表");
最后设置居中
ICellStyle cellstyle = hssfworkbook.CreateCellStyle();//设置垂直居中格式
cellstyle.VerticalAlignment = VerticalAlignment.Center;//垂直居中
sheet.GetRow(0).GetCell(0).CellStyle = cellstyle;
追问那批次编号 和制表日期呢 还有合计呢 大神?
追答批次编号 指标日期都是独立的单元格啊!
你直接按照这个格式写到第二行的 A B单元格里就可以了啊。
“合计”这两个字是合并单元格,你按照上面给你的方法写一下合并,然后把string赋进去不就完了么?
至于算数,
你反正是有数据源的 用linq的Sum()去求,然后赋值也可以,
或者直接在那一行加上函数也是可以的啊,
函数是Cell.SetCellFormula(); 就可以了啊
报这个错误 怎么弄啊? 解决了这个错误
现在执行到这里的时候报错
首字母大写试试, 我的npoi是2.0的 可能函数名称不大一样。
肯定是有这个单元格样式的。
再帮我看看这个问题咯,
断点设这里
即时窗口:值都追踪到了啊
为什么表格里面还是每行最后一列有数据呢?
你这写法我也是看的蒙圈
for(int i =0 ;i<list.count;i++) //这是EXCEL一行对应数组的一行你的代码写的是: 先找你数据源的第一行的第一个,然后新建EXCEL里的一行,
找到第一行第二个,然后新建EXCEL一行, 你这遍历每个值的时候都新建一行,肯定把赋值的都给覆盖掉了啊,
就好比你int a = 1;
然后你后面每次都给a赋值, a肯定保存不了之前的值啊。
追问大神,如何分别设置每个数值列的求和公式?像我上面全是使用SUM(E3:E6)。怎么判断是从G几到G几,H几到H几?还有如何判断是G,H还是J呢?因为有的字段不是decimal类型,就不用求和。一共三个问题,再次感谢大神,好事做到底吧
在for循坏外,单独Createrow,然后挨个写公式,
列名 挨个写,没办法自动的,需求要了你就求,不需要就跳过。
行数根据你数据源的数量去算,