我正在尝试使用 NPOI 库在 Visual Studio 2019 中使用 C# 生成 Excel 文件(.xlsx)。我遇到了插入数据格式不正确的问题。
我有一个可以同时包含数字和文本的字段,当它显示在 Excel 中时,单元格仅在数字字段上发出警告“数字存储为文本”,如所附图像中所示。
我尝试了以下方法使单元格成为字符串单元格。
ICellStyle cellStyle = book.CreateCellStyle();
cellStyle.DataFormat = NPOI.HSSF.UserModel.HSSFDataFormat.GetBuiltinFormat("text");
ICell cell = row.CreateCell(cellIndex);
cell.CellStyle = cellStyle;
cell.SetCellType(CellType.String);
cell.SetCellValue(itemData.PropertyName.ToString());
我在生成的 Excel 文件中仍然收到相同的警告
如有任何帮助,我们将不胜感激。
这是正确且有效的行为。 Excel 消息仅供参考,并非错误。 它告诉您,您已成功存储仅由数字字符组成的文本字符串。 您在 Excel 中的选项是将其转换为数字或忽略“错误”。
如果您希望将值存储为数字,那么您不必将单元格类型设置为字符串,执行如下操作:
if (itemData.PropertyName.ToString().Any(c => !char.IsNumber(c)))
cell.SetCellType(CellType.String);
else
cell.SetCellType(CellType.Numeric);
这可能有用:NPOI 单元格格式链接
在调查了网上的一些答案后,我意识到 function cell.SetCellValue 有多个重载来设置不同的值类型(int、double、string、DateOnly、DateTime、Bool)。例如。如果您以字符串形式发送数值 (number.ToString()),该函数会将 num 作为字符串写入单元格,从而导致问题中所描述的行为,但如果您发送整数或双精度数而不将其转换为字符串,然后函数将值写入数字。