在现有文档中编辑 Range NumberFormat

Posted

技术标签:

【中文标题】在现有文档中编辑 Range NumberFormat【英文标题】:Edit Range NumberFormat in existing document 【发布时间】:2012-10-25 09:01:09 【问题描述】:

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

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

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

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

【问题讨论】:

【参考方案1】:

我知道这是一篇旧帖子,但我一直在处理同样的问题。我收到的 .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 符号的权威指南,我仍在努力寻找!)

【讨论】:

+1 这太好了,我在所有列上都使用了它,然后相应地应用了自定义宽度和数字格式【参考方案2】:

尝试通过 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

您可以使用这些数字格式!

希望对你有帮助

【讨论】:

【参考方案3】:

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

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

    for(int i = 1; i <= 100; i++)
    
       sheet_.Cells[1, i].Value = sheet_.Cells[1, i].Value;
    

【讨论】:

这对我的用例来说非常慢。 @Grinfish 的回答几乎是即时的。【参考方案4】:

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

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

【讨论】:

【参考方案5】:

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

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

【讨论】:

以上是关于在现有文档中编辑 Range NumberFormat的主要内容,如果未能解决你的问题,请参考以下文章

允许用户在 iCloud 不可用时编辑/查看现有文档

用于操作/编辑现有 xml 文档的最佳 java Xml 解析器

如何使用 Ruby 在现有 PDF 上编辑或书写?

例外:在对象 SpreadsheetApp.Range 上获取方法或属性 setNumberFormats 时出现意外错误 - 现有答案对我没有帮助

编辑 midi 事件

如何全部删除WORD文档中的空行回车有没捷径?