我有一个将数据保存到Excel文件的ETL。问题是没有为整数写出小数。例如:
14.00
正在写为
14
我写出该行的代码是
loWorksheet.Cells[liRowNum, 5] = lcAmount.ToString("0.00");
当我单步执行代码时,它显示为14.00,但在Excel文件中它不保留小数位。这是可以在我的代码中修复的东西还是这个Excel问题?有什么建议吗?
答案 0 :(得分:7)
我非常确定你必须为你的细胞设置格式。我现在无法检查,但它会像
一样 xlYourRange.NumberFormat = "0.00";
您可以查看此问题Set data type like number, text and date in excel column using Microsoft.Office.Interop.Excel in c#
答案 1 :(得分:2)
如果您真的希望数据按字面意思显示在源文件中,那么您必须处理权衡问题。最简单的方法是将数据格式化为文本。您可以一次完成一个单元格或整个列:
loWorksheet.Columns["A:E"].NumberFormat = "@";
权衡是这时只是文字。你无法添加,求和,平均等等。
另一方面,如果您的数据如下所示:
4.0
4.00
4.000
你不能真正把它作为数字保留,并期望保留原始格式而不做一些有趣的事情。
如果它一直是两位小数,并且你知道它会是,那么我同意@ RenatZamaletdinov的解决方案。
你可能想要考虑其他字符串以及Excel可以做什么
0000123 becomes 123
10/23 will probably render as a date, depending on your localization
12345678901234567890 will render as scientific notation probably
如果您使用数字格式文本(@
),这些都可以避免,但又不知道您打算如何处理数据,很难说这是否是正确的方法。
答案 2 :(得分:1)
将lcAmount.ToString("0.00");
包裹在一对引号中并在其前面加上等号。这样可以防止excel覆盖格式。
loWorksheet.Cells[liRowNum, 5] = "=" + '"' lcAmount.ToString("0.00") + '"';