C# - 没有写出Excel的小数

时间:2016-10-28 14:07:58

标签: c# excel etl

我有一个将数据保存到Excel文件的ETL。问题是没有为整数写出小数。例如:

14.00

正在写为

14

我写出该行的代码是

loWorksheet.Cells[liRowNum, 5] = lcAmount.ToString("0.00");

当我单步执行代码时,它显示为14.00,但在Excel文件中它不保留小数位。这是可以在我的代码中修复的东西还是这个Excel问题?有什么建议吗?

3 个答案:

答案 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") + '"';