我无法更改现有 Excel 文档 (xlsx) 中的列格式。列内容实际上是数字,但显示为文本,因此出现绿色三角形,告诉单元格显示为文本。
因此,我在 C# 应用程序中打开此文档并执行以下操作:
sheet_.Range[sheet_.Cells[1, 2], sheet_.Cells[rowNum, 2]].EntireColumn.NumberFormat = "0";
但它不会更改列以将内容显示为数字(它们保持左侧对齐)
我无法更改现有 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 符号的权威指南,我仍在努力寻找!)
尝试通过 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
你可以玩这些数字格式!
希望对你有帮助
我没有找到解决这个问题的理想方法,结果如下:
sheet_.get_Range("A1", "A100").NumberFormat = "0";
for(int i = 1; i <= 100; i++)
{
sheet_.Cells[1, i].Value = sheet_.Cells[1, i].Value;
}
我知道这是一篇旧帖子,但我偶然发现了这个并有一个解决方案。您是否尝试过不分配任何 NumberFormat?默认情况下,excel 根据单元格内容决定,因此如果您有存储为文本的数字,则不会出现绿色三角形。如果您想根据数据类型读取值,请参考这篇文章
http://www.codeproject.com/Articles/335589/Export-Multiple-Datasets-to-Multiple-Excel-sheets
对我来说,使用Style和NumberFormatLocal解决了这个问题:
sheet_.get_Range("A1", "A100").Style.NumberFormatLocal = "0";