You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NPOI C#生成Excel出现“Number Stored As Text”警告如何解决

问题根因与解决方案

你遇到的问题核心是两个错误使用逻辑:一是调用了适配.xls格式的HSSF类处理.xlsx格式,二是设置单元格类型和赋值的顺序错误,具体修复方案如下:


修复步骤

1. 替换文本格式的获取方式

.xlsx格式对应XSSF实现,不能使用HSSFDataFormat获取格式编码,正确的样式创建代码如下:

ICellStyle textCellStyle = book.CreateCellStyle();
// 针对.xlsx格式使用XSSFDataFormat,内置文本格式的编码为@
textCellStyle.DataFormat = NPOI.XSSF.UserModel.XSSFDataFormat.GetBuiltinFormat("@");

如果你的代码需要同时兼容.xls和.xlsx格式,可以使用通用写法:textCellStyle.DataFormat = book.CreateDataFormat().GetFormat("@");,无需手动区分HSSF/XSSF实现。

2. 调整单元格设置顺序

SetCellValue方法会自动根据传入值的类型修改单元格类型,导致之前的类型设置失效,需要调整为先赋值,再设置单元格类型和样式,代码如下:

ICell cell = row.CreateCell(cellIndex);
// 第一步先赋值
cell.SetCellValue(itemData.PropertyName.ToString());
// 第二步再设置单元格类型和样式
cell.SetCellType(CellType.String);
cell.CellStyle = textCellStyle;

3. 可选:彻底关闭对应警告

如果不需要保留Excel的错误检查触发能力,可以直接在工作簿配置中关闭「数字存储为文本」的错误检查,代码如下:

if(book is NPOI.XSSF.UserModel.XSSFWorkbook xssfBook)
{
    var errorOptions = xssfBook.GetCTWorkbook().AddNewErrorCheckingOptions();
    errorOptions.numberStoredAsText = false;
}

完成以上修改后重新生成Excel文件,打开后就不会再出现对应警告。


内容的提问来源于stack exchange,提问作者Jitender Dhaliwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 13:39:02