我无法更改现有Excel文档(xlsx)中的列格式。列内容实际上是数字,但显示为文本,因此绿色三角形显示单元格显示为文本。
所以我在C#app中打开这个文档并执行以下操作:
sheet_.Range[sheet_.Cells[1, 2], sheet_.Cells[rowNum, 2]].EntireColumn.NumberFormat = "0";
但它并没有改变列以将内容显示为数字(它们保持左侧对齐)
答案 0 :(得分:3)
我知道这是一个老帖子,但我一直在处理同样的问题。我收到的.xlsx文件已经有绿色三角形表示“Number as Text”错误。我找不到一种方法以编程方式运行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
您可以使用这些数字格式!
希望它可以帮到你
答案 2 :(得分: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;
}
答案 3 :(得分:0)
我知道这是一个很老的帖子,但我偶然发现了这个并为此提供了解决方案。您是否尝试过不分配任何NumberFormat?默认情况下,excel根据单元格内容决定,因此如果您将数字存储为文本,则不会获得绿色三角形。如果您想要根据数据类型读取值,请参阅此帖子
http://www.codeproject.com/Articles/335589/Export-Multiple-Datasets-to-Multiple-Excel-sheets
答案 4 :(得分:0)
对于我使用样式和 NumberFormatLocal 解决了问题:
sheet_.get_Range("A1", "A100").Style.NumberFormatLocal = "0";