3

我无法更改现有 Excel 文档 (xlsx) 中的列格式。列内容实际上是数字,但显示为文本,因此出现绿色三角形,告诉单元格显示为文本。

因此,我在 C# 应用程序中打开此文档并执行以下操作:

sheet_.Range[sheet_.Cells[1, 2], sheet_.Cells[rowNum, 2]].EntireColumn.NumberFormat = "0";                

但它不会更改列以将内容显示为数字(它们保持左侧对齐)

4

5 回答 5

4

我知道这是一个旧帖子,但我一直在处理同样的问题。我收到的 .xlsx 文件已经有表示“数字为文本”错误的绿色三角形。我找不到以编程方式运行 Excel 错误检查命令“转换为数字”的方法,您可以通过单击 Excel 来执行此操作,并且更改具有这些错误的单元格上的 NumberFormat 对我不起作用,但我能够使用 TextToColumns 方法“刷新”单元格格式。

int lastCol = sheet.UsedRange.Columns.Count;
        if(lastCol > 1)
        {
            for (int i = 1; i <= lastCol; i++)
            {
                sheet.Columns[i].TextToColumns(Type.Missing, XlTextParsingType.xlDelimited, XlTextQualifier.xlTextQualifierNone);
            }

从那里您可以更改 NumberFormat。我碰巧有被放入科学计数法的长整数,所以我用它再次使它们成为常规整数:

sheet.Cells.NumberFormat = "#";

(PS,如果有人找到有关用于自定义 NumberFormats 符号的权威指南,我仍在努力寻找!)

于 2015-10-15T19:23:35.703 回答
3

尝试通过 get_Range 方法访问单元格值!例如,对于您想要的数字格式,假设您的 excel 单元格中有这个数字:1546,65

sheet_.get_Range("P10", "Q10").NumberFormat = "0"; // returns 1546
sheet_.get_Range("P10", "Q10").NumberFormat = "0,00"; // returns 1546,65
sheet_.get_Range("P10", "Q10").NumberFormat = "#.##0,00"; // returns 1.546,65

你可以玩这些数字格式!

希望对你有帮助

于 2012-10-31T08:59:52.893 回答
0

我没有找到解决这个问题的理想方法,结果如下:

    sheet_.get_Range("A1", "A100").NumberFormat = "0";

    for(int i = 1; i <= 100; i++)
    {
       sheet_.Cells[1, i].Value = sheet_.Cells[1, i].Value;
    }
于 2012-11-08T08:32:36.583 回答
0

我知道这是一篇旧帖子,但我偶然发现了这个并有一个解决方案。您是否尝试过不分配任何 NumberFormat?默认情况下,excel 根据单元格内容决定,因此如果您有存储为文本的数字,则不会出现绿色三角形。如果您想根据数据类型读取值,请参考这篇文章

http://www.codeproject.com/Articles/335589/Export-Multiple-Datasets-to-Multiple-Excel-sheets

于 2014-04-23T15:19:22.487 回答
0

对我来说,使用StyleNumberFormatLocal解决了这个问题:

sheet_.get_Range("A1", "A100").Style.NumberFormatLocal = "0";
于 2016-05-18T12:05:13.587 回答