初学C#踩坑第一篇
NPOI读取Excel设置单元格格式为数值不生效问题
问题简介:
C#使用NPOI写入Excel是修改单元格不能修改,生成后Excel需要打开后双击单元格才会改变格式,话不多说下面直接讲解决办法。
出现问题点:
给单元格赋值时全部赋值的时String类型的值,所以导致单元格格式不生效。
解决方法:
为单元格赋值时赋值相应类型的值,例如:单元格格式为数值,则赋值double。
//设置单元格格式代码IDataFormat dataformat = workbook.CreateDataFormat();ICellStyle style2 = workbook.CreateCellStyle();style2.DataFormat = dataformat.GetFormat("0.0"); //改变小数精度【小数点后有几个0表示精确到小数点后几位】
IDataFormat dataformat = workbook.CreateDataFormat();ICellStyle style2 = workbook.CreateCellStyle();style2.DataFormat = dataformat.GetFormat("0.0"); //改变小数精度【小数点后有几个0表示精确到小数点后几位】foreach (DataRow row in sourceTable.Rows){IRow dataRow = sheet.CreateRow(rowIndex);sheet.CreateRow(rowIndex).Height = 100 * 5;foreach (DataColumn column in sourceTable.Columns){//遍历DataRow时当列为金额时,将单元格格式改为数值格式if (column.ToString() == "金额"){ICell RowCell = dataRow.CreateCell(column.Ordinal);//来看这里 #############################################//给单元格赋值时进行一下类型转换 double.Parse((row[column] ?? "").ToString())RowCell.SetCellValue(double.Parse((row[column] ?? "").ToString()));RowCell.CellStyle = style2;}else{ICell RowCell = dataRow.CreateCell(column.Ordinal);RowCell.SetCellValue((row[column] ?? "").ToString());RowCell.CellStyle = style;}}
到次就大功告成了。
如果觉得《NPOI读取Excel设置单元格格式为数值不生效问题》对你有帮助,请点赞、收藏,并留下你的观点哦!