我在做一个Excel打印功能的时候,我使用到了Aspose.Cells组件。由于这个组件是收费的然后里面问题也比较多,也不知道为什么写入数据到Excel 有些就报错,有些就可以。于是放弃了这个组件。
然后又改用NOPI这组件,现在所有的Excel都能够写入数据了,但是另外的问题又出来了,这个Excel打印的问题已经困扰我差不多两个月了,修复一个问题另外问题又出现了,特来求助。
-------------------------------------问题描述如下-----------------------------------
在项目中有很多个Excel模板,每个Excel都会制作成不同的单据格式,但是里面的数据基本是固定的[每个客户所需要的单据不一样]。于是我在Excel中用一个sheet作为数据的存储,其他sheet中的都是引用这个里面的数据根据计算公式生成不同的数据统计和单据数据。
DataSource 就是我写入数据的Sheet,目前是使用NOPI写入的。写入数据什么都没有问题。
P 是装箱单,I是发票单据,然后依次是报关单,申报要素等等,每个模板可能都不一样,但是DataSource是一定的,其余的都是引入DataSource的数据。
上面的图应该引入DataSouce中的四行数据,但是现在就没有引用出来。之前如果我使用Aspose.Cells来写入的话就能够引用出来(这个有些Excel打不开就不能写入[原因不明],而且收费弃用)。 这里明确一下套用的公式肯定是正确的,不要在这个方面下结论,已经测试过。我个人找到的原因是因为是 DataSource写入的数据格式不正确,比如字符串要用什么类型,数字必须用什么类型。
如果我使用双击dataSouce 中的每个单元格或者P 中引用的单元格数据就能够引用出来,从这些表现来看应该就是数据格式的问题。 现在我就想问大家NOPI写入数据的时候是否能够写入特定的数据格式,我使用了
sheet.GetRow(index).Cells[0].SetCellType(CellType.String);
类似的操作还是不行,请问具体是什么原因?? 要如何解决,问了很多人都不知道,估计一般都只是用到了写入能够正常显示就可以了,没有涉及到运算的问题。
只要以上问题解决了,自动打印excel等都不是问题,可能对于各位来说问题很简单,那就请帮帮我!
-----------------------------------------------------------------------------------
由于网络环境有些图可能看不到,可以QQ联系我 821865130 谢谢! 如果能够有更好的方法解决此问题,另有报酬,不是太多 但也算一份心意!再次感谢
自己解决了
其实可以设置某个单元格的格式为字符串,用((Microsoft.Office.Interop.Excel.Range)sheet.Cells[index, 0]).NumberFormatLocal = "@";文字应该可以原文输出
如果是数字或者金额 或者是科学计数法 怎么弄的
在有最好是使用NOPI等这种三方组件,否则要安装office
你这种设置格式的方法没有试过,但是你可以试一下,下面这种方法:
HSSFCell cell2 = sheet.CreateRow(1).CreateCell(0);
cell2.SetCellValue(20000);
HSSFCellStyle cellStyle2 = hssfworkbook.CreateCellStyle();
HSSFDataFormat format = hssfworkbook.CreateDataFormat();
cellStyle2.DataFormat = format.GetFormat("格式代码");
cell2.CellStyle = cellStyle2;
就是通过样式去设置,然后单元格应用样式。样式通过DataFormat 这个属性来确定具体的类型。
我以前做过类似的类型,如果不知道String的类型代码,可以写一个Excel文件,读取看看,把对于的格式代码赋值过去就好了
GetFormat("格式代码"); 这个格式代码有多少种值可选还是,比如我想要金额表示的 或者科学计数法