NPOI读取Excel设置单元格格式为数值不生效问题

初学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;
        }


    }

到次就大功告成了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值