c# - 在现有文档中编辑范围 NumberFormat

标签 c# .net excel-interop number-formatting

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

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

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

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

最佳答案

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

关于c# - 在现有文档中编辑范围 NumberFormat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13065087/

相关文章:

c# - 使用 CancellationTokenSource

excel - `Range.Formula` 是 COM 对象吗?

c# - DataReader 有行和数据,试图从中读取 "no data is present"

c# - 将重载方法与参数字符串 [] 和继承一起使用时的怪癖

c# - 根据对象类型拆分对象列表

c# - 类型 'X' 不存在类型 'X.X' 错误

c# - 没有分配给 var 的 COM 对象是否没有被释放?

c# - 问:Interop.Excel 打开两个文件实例

c# - 使用YouTube API和HTTpWebRequest批量删除视频

c# - 您是否需要在插入中指定所有字段