【问题标题】:The Excel cell type is 'Numeric' but still it appears as 'General'Excel 单元格类型为“数字”,但仍显示为“常规”
【发布时间】:2017-09-20 11:28:36
【问题描述】:

我在 C# 中使用 OpenXML 电子表格包将 datatable 转换为 excel。在代码中,我正在编写此代码以附加具有数字类型的单元格:

 public void MakeNumericCell(string cellReference, string cellStringValue, Row excelRow)
 {

    //  Add a new Excel Cell to our Row 
    Cell cell = new Cell() { CellReference = cellReference, DataType=CellValues.Number };
    CellValue cellValue = new CellValue(cellStringValue);       
    cell.Append(cellValue);
    excelRow.Append(cell);

 }

请注意,我不是在问How to convert Text cell to Numberchange data type (format) of Excel Cell谁的答案已经存在于 SO。

在我的例子中,单元格 do 在 Excel 工作表中转换为数字格式。我可以使用公式=Type(Cell) 找到 Excel 单元格的类型,如果单元格类型是数字,则返回 1。如图所示,最后一列(列名是 Type of Cell)使用 =Type(cell) 公式计算,该公式为 C 列返回 1,但它仍然出现在 General 中,如图所示。

我在这里做错了吗?还是 Excel 本身的问题?

【问题讨论】:

  • 除了答案,您可能还想使用=CELL("format", A2)等来检查单元格的格式。参考检查TYPE functionCELL function

标签: c# excel openxml-sdk


【解决方案1】:

您误解了Type 函数的作用。它返回值的类型,而不是单元格的格式。

如果您不考虑格式,并将单元格的内容更改为“test”,则类型将更改为 2。如果将其更改为“true”,则类型将返回为 4。与此无关与单元格的格式,与内容无关。

【讨论】:

  • 哦..这意味着单元格格式和单元格类型完全不同?您能分享一下如何将“格式”从“常规”修改为“数字”吗?
  • 您已经找到了格式下拉菜单(显示“常规”的下拉菜单)。单击它并选择一个不同的选项。
  • 很抱歉不清楚。我想使用 C# 以编程方式更改它。不是直接来自 Excel。
  • 尝试阅读并尝试来自Changing DataType of cell to DoubleApplying % number format to a cell value using OpenXMl 的建议。第二个更改为百分比,但您可以将其修改为数字格式。
  • 嗯,你可以很容易地找到方法——开始录制宏,然后更改下拉列表:) 或查看this link
猜你喜欢
  • 1970-01-01
  • 2015-07-10
  • 2011-12-05
  • 1970-01-01
  • 2023-04-04
  • 2016-10-18
  • 2020-04-29
  • 2022-12-17
  • 1970-01-01
相关资源
最近更新 更多