精华内容
下载资源
问答
  • 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;
            }
    
    
        }
    

    到次就大功告成了。

    展开全文
  • poi导出excel文件单元格设置数值(BigDecimal),日期 日期格式单元格 private static CellStyle getDateCellStyle (Workbook wb) { //设置日期数据样式 CellStyle dataStyle = getCellStyle(wb); DataFormat ...

    poi导出excel文件单元格设置:数值(BigDecimal),日期。今天主要是分享一下我在开发中解决类似问题的解法,也在网上看过大家的方法作为参考,下面写的不对的地方,欢迎大家指出,可以一起讨论。

    日期格式单元格

    private static CellStyle getDateCellStyle (Workbook wb) {
        //设置日期数据样式
        CellStyle dataStyle = getCellStyle(wb);
        DataFormat dataFormat = wb.getCreationHelper().createDataFormat();
        short date = dataFormat.getFormat("yyyy-MM-dd");
        dataStyle.setDataFormat(date);
        return dataStyle;
    }

    数值类型

    private static CellStyle getNumberCellStyle (Workbook wb) {
    //设置数值数据样式
    
    CellStyle dataStyle = getCellStyle(wb);
    
    DataFormat dataFormat = wb.getCreationHelper().createDataFormat();//保留两位小数点;
    
    short number = dataFormat.getFormat("#,##0.00");
    dataStyle.setDataFormat(number);
    return dataStyle;
    }
    

    设置默认类型

    private static CellStyle getCellStyle (Workbook wb) {
    //设置数据样式
    
    final CellStyle dataStyle = wb.createCellStyle();// 设置自动换行
    
    dataStyle.setWrapText(false);//创建一个上下居中格式
    
    dataStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//左右居中
    
    dataStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//设置边框
    
    dataStyle.setBottomBorderColor(HSSFColor.BLACK.index);
    dataStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
    dataStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
    dataStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
    dataStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
    return dataStyle;
    }
    

    写合计行,最后一行进行合计

    对excel的第8,13列数据进行求和然后把数据统计后放在最后一行合计中。XXXBigDecimal为第8行的数据和,SSSBigDecimal为第13行的数据和。

    Row endRow = sheet.createRow(dataList.size()+2);
    for (int i = 0, rows = dataList.size(); i < rows; i++) {
        List<Object> data = dataList.get(i);
        for (int j = 0, colNum = data.size(); j < colNum; j++) {
            Cell endcell= endRow.createCell(j);
            endcell.setCellStyle(dataStyle);
            if(j==0){
                endcell.setCellValue("合计:");
            }
            endcell.setCellStyle(numStyle);
            if(j==8){
                endcell.setCellValue(XXXBigDecimal.doubleValue());
            }
            if(j==13){
                endcell.setCellValue(SSSBigDecimal.doubleValue());
            }
        }
    }

    通过类型判断加入数据

    // 创建单元格,并设置值
    //默认样式
    final CellStyle defaultStyle=getCellStyle(wb);
    //日期格式样式
    final  CellStyle dateStyle=getDateCellStyle(wb);
    //数值格式样式
    final  CellStyle numStyle=getNumberCellStyle(wb);
    //理赔金额总计
    BigDecimal XXXBigDecimal=new BigDecimal(0);
    //结案金额总计
    BigDecimal SSSBigDecimal=new BigDecimal(0);
    for (int i = 0, rows = dataList.size(); i < rows; i++) {
        final Row dataRow = sheet.createRow(i + 2);
        List<Object> data = dataList.get(i);
        for (int j = 0, colNum = data.size(); j < colNum; j++) {
            final  Cell datacell=dataRow.createCell(j);
            Object dateObj=data.get(j);
            if(dateObj instanceof Date){
                datacell.setCellStyle(dateStyle);
                datacell.setCellValue((Date)dateObj);
            }else if(dateObj instanceof BigDecimal){
                datacell.setCellStyle(numStyle);
                datacell.setCellValue(((BigDecimal) dateObj).doubleValue());
            }else {
               datacell.setCellStyle(defaultStyle);
               datacell.setCellValue(dateObj.toString());
            }
        }
        //进行金额计算
    XXXBigDecimal=XXXBigDecimal.add((BigDecimal)data.get(8));
    SSSBigDecimal=SSSBigDecimal.add((BigDecimal)data.get(13));
        }
    
    展开全文
  • NPOI 设置EXCEL单元格格式 数值

    万次阅读 2016-10-26 11:56:10
    NPOI设置EXCEL单元格格式为数值,网上有很多信息,但并没有实际解决问题的方法。 实际上EXCEL的格式设置很简单,只要将样式对象的DataFormat属性设置为194即可,代码如下: #region 普通样式-靠右 // 设置边框 ...

    NPOI设置EXCEL单元格格式为数值,网上有很多信息,但并没有实际解决问题的方法。

    实际上EXCEL的格式设置很简单,只要将样式对象的DataFormat属性设置为194即可,代码如下:

    #region 普通样式-靠右

    // 设置边框
    ICellStyle csRight = wb.CreateCellStyle();
    csRight.BorderBottom = NPOI.SS.UserModel.BorderStyle.THIN;
    csRight.BorderLeft = NPOI.SS.UserModel.BorderStyle.THIN;
    csRight.BorderRight = NPOI.SS.UserModel.BorderStyle.THIN;
    csRight.BorderTop = NPOI.SS.UserModel.BorderStyle.THIN;
    csRight.WrapText = true;// 指定单元格自动换行
    csRight.SetFont(font);//设置字体
    csRight.VerticalAlignment = VerticalAlignment.CENTER;//垂直居中
    csRight.Alignment = HorizontalAlignment.RIGHT;
    csRight.DataFormat = 194;//HSSFDataFormat.GetBuiltinFormat("###0.00");//(short)CellType.NUMERIC;
    #endregion


    还有一点要注意,在单元格赋值时要用double类型赋值。

    cell = sheet.GetRow(curRowIndex).CreateCell(stub + products.Count * 9 + 1);
                                cell.SetCellValue((double)eamt);
                                cell.CellStyle = csRight;

    展开全文
  • POI设置单元格格式为数值或日期

    万次阅读 2019-05-31 11:17:17
    一、需求:开发过程中,程序导出的Excel表中的数字文本(即在Excel中表现为单元格左上角带绿色三角形),导致需要在Excel中先转换...(1)设置为数值 HSSFCellStyle hssfCellStyleDouble = wb.createCellStyl...

    一、需求:开发过程中,程序导出的Excel表中的数字为文本(即在Excel中表现为单元格左上角带绿色三角形),导致需要在Excel中先转换格式才能统计;表中的日期也为文本,不能直接利用Excel的自动刷选功能按月、季度和年度选择。

     

    二、关键代码:

    (1)设置为数值

            HSSFCellStyle hssfCellStyleDouble = wb.createCellStyle();
            HSSFDataFormat df = wb.createDataFormat(); // 此处设置数据格式
            hssfCellStyleDouble.setDataFormat(df.getBuiltinFormat("#,##0.0"));//保留1位小数点

            cell0.setCellValue( Double.parseDouble(value));    
            cell0.setCellStyle(hssfCellStyleDouble);

    (2)设置为日期
            HSSFCellStyle hssfCellStyleDate = wb.createCellStyle();
            hssfCellStyleDate.setDataFormat(df.getFormat("yyyy-MM-dd"));//
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

            cell0.setCellValue(format.parse(value));
            cell0.setCellStyle(hssfCellStyleDate);

    三、效果

    在图1中可以看到,单元格没有绿色三角形,元数据是整数则显示整数,是小数则保留一位小数,可直接统计。

    在图2中可以看到,单元格显示的虽然是yyyy-mm-dd格式,但是在Excel中识别为yyyy/mm/dd格式,这是Excel日期格式默认识别的一种,所以在图3中可以看到可以直接利用EXCEL的自动筛选功能按月、季度和年度进行选择了。

    四、总结

    单元格除了要设置格式外,保存到单元格的数据也要设置为同一格式,否则最终导出的Excel数据达不到你想要的效果。

     

     

     

    展开全文
  • 最近做的一个ITFIN的项目中,导出的数据中有文本格式,也有货币格式,所以为了方便在将来导出的表格中做计算,存放货币先用正则表达式判断数据是否为数值型,如果为数值型,则设置单元格格式整数或者小数;...
  • Excel 单元格公式,以一个...为单元格设置公式的方式与设置普通值是一样的。 import openpyxl wb = openpyxl.Workbook() sheet = wb.active sheet['A1'] = 1 sheet['A2'] = 2 sheet['A3'] = '=SUM(A1:A2)' print(...
  • XSSFCellStyle 设置单元格为数值类型

    千次阅读 2020-01-09 17:06:35
    EXCEL输出可计算的数值类型 我这里的类型是BigDecimal,可根据自己的数字类型去判断 主要以下两行代码 cell.setCellValue(((BigDecimal) cellData).doubleValue()); // 输出double类型 dataStyle.setDataFormat...
  • poi 设置单元格数值

    2020-08-19 16:36:08
    cell.setValue(Double类型,或者integer类型的值即可); cell.setValue("");----------这样写,该单元格就不是数值型,能参与计算。
  • 最近做的一个ITFIN的项目中,后台需要用POI实现导出功能,导出的数据中有文本格式,也有货币格式,所以为了方便在将来导出的表格中做计算,存放货币的单元格需要设置为数值类型。  导出的Excel的单元格都是文本...
  • 原因1:Excel设置单元格格式后,并能立即生效,必须挨个双击单元格,才能生效。数据行较多时,效率太低。 原因2:主要是一些从网上拷贝过来的日期或数字excel默认文本格式或特殊-中文数字格式大小写。手动设置...
  • 向layui数据表格单元格设置下拉框

    千次阅读 2019-07-28 19:53:58
    目前layui数据表格,只支持单元格edit编辑类型,尚未支持单元格下拉款类型,但是我们可以使用单元格templet自定义模板,layui-cols-表头参数一览表解释说明:自定义列模板遵循laytpl语法,这是一个非常实用的功能,...
  • 在给excel单元格设置格式后,为什么必须双击才会生效?如何才能让设置直接生效?excel 设置单元格格式后 没有变化,需要一个一个单元格双击后才会变格式,请问这个问题怎么解决啊?   解决方法:整列数据进行+o...
  • 1、导出用的是SXSSFWorkbook的方式,POI版本4.01,进行设置单元格格式的时候,预期导出的excel格式显示为数值,结果显示自定义。 2、百度上找了很多种方法,解决方法可归纳: ① 使用excel的内嵌格式 ...
  • jqgrid 动态设置单元格不可编辑

    万次阅读 2017-05-09 15:08:15
    单元格可编辑需要设置3个地方 1、tableGrid里面的参数 cellEdit:true(开启行编辑功能) false(默认,可编辑) 2、cellsubmit: 'clientArray' ...如何动态设置单元格不可编辑 首先,表格加载完成后使用gridComplet
  • 前篇文章我们介绍了一下Excel中如何设置数据有效性以及COUNTIF函数的用法,这篇文章主要介绍有重复数据时如何统计重复数据的个数以及通过数据有效性去设置单元格不允许出现重复数据。 统计单列重复的个数 如下...
  •  最近做的一个ITFIN的项目中,后台需要用POI实现导出功能,导出的数据中有文本格式,也有货币格式,所以为了方便在将来导出的表格中做计算,存放货币的单元格需要设置为数值类型。  导出的Excel的单元格都是文本...
  • 利用poi导出Excel时设置单元格类型为数值类型后却变成了自定义的类型 代码如下: sheetcell.setCellType(HSSFCell.CELL_TYPE_NUMERIC); HSSFCellStyle cellStyle = workbook.createCellStyle(); HSSFDataFormat ...
  • XSSFDataFormat format = wb.createDataFormat...如果getFormat()里参数“0”或者“0.00”,均显示自定义格式,显示数值类型。 采用上面的代码则总是显示货币类型。网上查了很多资料都没有解决。知道是什么问题。
  • 因工作需要,要将Excel中的数据导入到Oracle中(农民工活儿),但是导入一直报错,后来发现在Excel中有一个数值型的列有异常,虽然已经将该列转换成了“数值”类型,但将该单元格的内容粘贴到记事本中后发现数据外面...
  • 描述:Excel2019单元格超出宽度的文字设置为不显示的方法 步骤: 原数据示例 选中所有,右键设置单元格格式->对齐->水平对齐->选择靠右(缩进)
  • EasyPoi来一个单元格设置属性

    千次阅读 2019-05-23 14:56:59
    easyPoi本来是挺好用的,和一个java实体类关联,操控实体数组就能写出来一个Excel文件,但在实际用途中我们需要一些特殊的单元格做一些调整,让人看的舒服一些,也更加突出。 要达到这种效果。先加上maven &...
  • 关键代码 sht.range("a:a").api.NumberFormat = "@" ... sht.range('a:a').api.font.size = 15 # 设置单元格字体大小 sht.range("a:a").api.font.name = "微软雅黑" # 设置字体 sht.range("a:a").api.NumberFormat
  • 这里记录在工作中遇到的一个问题: 在使用poi导出表格的时候,生成的序号,员工编号等数据中包含009这种以0开的数据,在导入的时候需要保留0的方式作为数据,但是使用传统的格式会舍弃掉00,...设置单元格的样式...
  • DevExpress 合并单元格设置

    千次阅读 2014-12-08 13:40:10
    1、设置gridview单元格可以合并 gridView1.OptionsView.AllowCellMerge = true; 所有列均合并 2、只针对某些列设置可以合并 只合并部门列,其余列合并
  • Swing Jtable 设置单元格不可编辑

    千次阅读 2018-09-05 00:32:23
    Swing Jtable 设置单元格是可编辑,这与SWT正好相反。提供的API也能修改可编辑性,但可以通过重写AbstractTableModel来实现JTable 单元格不可编辑。 核心代码: class MyTableModel extends AbstractTableModel...
  • ``` // 整数 if (type == 1) { cell.setCellType(CellType.NUMERIC); XSSFDataFormat format = xssfWorkbook.createDataFormat();... cellStyle.setDataFormat(format.getFormat("0"));...
  •   POI按照源单元格设置目标单元格格式  2011-11-24 00:25:07| 分类: 日记 | 标签:java eclipse javaexcel poi  |举报 |字号大中小 订阅 poi按照一个源
  • Excel单元格设置成下拉选

    千次阅读 2018-08-09 09:29:09
    1.以WPS例,Office也有相关选项,可以设置单个单元格或一列单元格。   2.选择选项卡,“数据”--“有效性”,“允许”选择“序列”,在“来源”中输入下拉选的选项,注意:选项之间用英文逗号隔开。 3....
  • 官方文档地址:https://www.iviewui.com/components/table#TDYS,单元格:通过给数据 data 设置字段cellClassName可以给任意一个单元格指定样式。 但是如果你使用了插槽的话,你设置 的样式就不会生效。可以使用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 179,261
精华内容 71,704
关键字:

为什么单元格设置不了数值