c# -小数不写入Excel
本文关键字:Excel 小数 | 更新日期: 2023-09-27 18:15:34
我有一个将数据保存到Excel文件的ETL。问题是小数没有被写成整数。例子:
14.00
被写成
14
我写这一行的代码是
loWorksheet.Cells[liRowNum, 5] = lcAmount.ToString("0.00");
当我逐步执行代码时,它显示为14.00,但在Excel文件中它没有保留小数点。这是可以在我的代码中修复的东西,还是这是一个Excel问题?有什么建议吗?
我很确定你必须为你的单元格设置格式。我现在不能检查,但它会是像
这样的东西 xlYourRange.NumberFormat = "0.00";
您可以在excel列中使用Microsoft.Office.Interop.Excel在c#中检查此问题集数据类型,如数字,文本和日期
如果您真的希望按照源文件中的方式显示数据,则必须进行权衡。最简单的方法是将数据格式化为文本。您可以一次对一个单元格执行此操作,也可以对整个列执行此操作:
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
如果您制作数字格式文本(@
),则可以避免所有这些,但是如果不知道您计划对数据做什么,则很难说这是否是正确的方法。
将lcAmount.ToString("0.00");
括在一对引号中,并在其前面放一个等号。这将防止excel重写格式。
loWorksheet.Cells[liRowNum, 5] = "=" + '"' lcAmount.ToString("0.00") + '"';