【问题标题】:NPOI C# Cell Format Warning(Number Stored As Text)NPOI C# 单元格格式警告(数字存储为文本)
【发布时间】:2021-09-30 02:42:56
【问题描述】:

我正在尝试使用 NPOI 库在 Visual Studio 2019 中使用 C# 生成一个 excel 文件 (.xlsx)。我遇到了插入的数据格式不正确的问题。

我有一个可以同时包含数字和文本的字段,当它显示在 Excel 中时,单元格仅在数字字段(如附图中所示)上发出警告“数字存储为文本”。

我尝试了以下方法使单元格成为字符串单元格。

  1. 通过为单元格赋予样式。
ICellStyle cellStyle = book.CreateCellStyle();
cellStyle.DataFormat = NPOI.HSSF.UserModel.HSSFDataFormat.GetBuiltinFormat("text");
  1. 按设置单元格类型
ICell cell = row.CreateCell(cellIndex);
cell.CellStyle = cellStyle;
cell.SetCellType(CellType.String);
cell.SetCellValue(itemData.PropertyName.ToString());

我仍然在生成的 excel 文件中收到相同的警告

感谢任何帮助。

【问题讨论】:

    标签: c# .net excel export-to-excel npoi


    【解决方案1】:

    这是正确有效的行为。 Excel 消息是信息性的,而不是错误。它告诉您您已设法存储仅由数字字符组成的文本字符串。您在 Excel 中的选择是将其转换为数字或忽略“错误”。

    如果您希望将值存储为数字,那么您不必将单元格类型设为字符串,请执行以下操作:

      if (itemData.PropertyName.ToString().Any(c => !char.IsNumber(c)))
        cell.SetCellType(CellType.String);
      else
        cell.SetCellType(CellType.Numeric);
    

    这可能有用:NPOI Cell Formatting Link

    【讨论】:

    • 感谢您的回答,如果我在值前面加上撇号,它会在 excel 文件中显示它,因此它在 excel 中显示为 '12345。
    • @JitenderDhaliwal 请查看我的更新答案。
    • 感谢您的解释,如果我能找到避免这种情况的方法,我会继续寻找。
    • @JitenderDhaliwal 你得到了正确的行为。我再次更新了答案,向您展示如何强制 Excel 将数字文本视为数字(与您要求的相反);确保这是您想要的。我不确定最后一行CellType 的可枚举值(类似于.Number .Numeric 甚至.General)
    猜你喜欢
    • 2014-02-11
    • 2014-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-23
    • 2016-05-23
    • 1970-01-01
    相关资源
    最近更新 更多