C#中使用OpenXML库创建Excel文件时数字无法识别的问题
解决OpenXML创建Excel时数字无法被识别的问题
核心问题
你直接传入字符串形式的数字(比如"1"),虽然设置了CellValues.Number,但OpenXML要求数字的CellValue必须是符合数值格式的纯数字字符串(不能包含空格、非数字隐形字符),同时Excel可能因默认单元格格式逻辑,导致未正确识别为数字类型。
修复步骤
- 先解析为数值类型再生成CellValue:确保输入文本是纯数字,先转换为
int或double类型,再转为标准格式的字符串,避免格式异常using System.Globalization; // 清理字符串中的隐形字符 string cleanedText = text.Trim(); if (double.TryParse(cleanedText, out double number)) { // 使用不变文化格式,避免区域设置导致的格式问题 CellValue cellValue = new CellValue(number.ToString(CultureInfo.InvariantCulture)); cell.DataType = CellValues.Number; cell.CellValue = cellValue; } - 绑定数字格式样式(可选):如果仍存在识别问题,可给单元格添加数字格式样式,强制Excel按数字解析
// 先在WorkbookStylesPart中创建数字格式 CellFormat numberCellFormat = new CellFormat { NumberFormatId = 0, // 0对应默认数字格式,1-16可指定其他数字格式(如百分比、货币) ApplyNumberFormat = true }; // 将格式添加到样式表,再给单元格指定样式索引 var stylesheet = workbookStylesPart.Stylesheet; stylesheet.CellFormats.Append(numberCellFormat); stylesheet.CellFormats.Count++; cell.StyleIndex = (uint)(stylesheet.CellFormats.Count - 1); - 排查输入文本合法性:确认输入的
text没有包含空格、换行、全角数字等隐形或非法字符,必要时提前做清理处理
内容的提问来源于stack exchange,提问作者Mehmet Şensoy
相关产品推荐
相关产品推荐

