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问题?有什么建议吗?

c# -小数不写入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") + '"';