您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > POI对Excel单元格的格式的设置参数
最近在做导出Excel的功能封装,遇到了几个问题:单元格宽度问题数据不是数字格式问题格式化了之后显示的不是数字而是######的问题(其实是因为单元格宽度不够导致的无法显示格式化之后的内容)下面先说说解决方法:1、单元格宽度问题这个问题有两个解决办法,一个是sheet.autoSizeColumn(1);sheet.autoSizeColumn(1,true);这种是自适应,第一参数是列号,从0开始,第二参数是是否考虑合并单元格。还有一种是固定的多宽,这个宽度值就交给自己去测试了:sheet.setColumnWidth(1,5000)这个第二个参数是宽度,具体上面说了自己测试。5000就很宽了,看放什么了。2、数据不是数字格式问题这个看api的感觉应该是设置这么个参数,cell.setCellType(Cell.CELL_TYPE_NUMERIC);但是实际上这个参数设置了不起作用,后来发现自己放的值是String类型,所以不行,后来改为了Double.valueOf(str)方法,发现还是不行,换成Double.parseDouble(str)就行了,原来前面的方法返回的是Double,后面的是double,封装类型也不行。。。后来就统一把所有的参数设置为Object类型了,这样好转。3、格式化后显示###这里是因为宽度不够啦,所以我这里主要说一下怎么格式化好了。其实Excel本身带了一部分的格式化,见下图如上图所示,Excel自带了一部分格式,而poi的DataFormat中也自带了这些格式并对应了short值,如下所示:“($#,##0_);[Red]($#,##0)”6“($#,##0.00);($#,##0.00)”7“($#,##0.00_);[Red]($#,##0.00)”8保留为过国际化用0×17–0×24“(#,##0_);(#,##0)”0×25“(#,##0_);[Red](#,##0)”0×26“(#,##0.00_);(#,##0.00)”0×27“(#,##0.00_);[Red](#,##0.00)”0×28“_($*#,##0_);_($*(#,##0);_($*\”-\”_);_(@_)”0×29“_(*#,##0.00_);_(*(#,##0.00);_(*\”-\”??_);_(@_)”0x2a“_($*#,##0.00_);_($*(#,##0.00);_($*\”-\”??_);_(@_)”0x2b“_($*#,##0.00_);_($*(#,##0.00);_($*\”-\”??_);_(@_)”0x2c“@”–Thisistextformat0×31使用下面的代码来设置CellStylecellStyle=workBook.createCellStyle();DataFormatformat=workBook.createDataFormat();cellStyle.setDataFormat(format.getFormat(@));cell.setCellStyle(cellStyle);接下来我会举例日期、小数、货币、百分比、中文大写、科学计数几种方式的格式化:1、日期格式cell.setCellValue(newDate(2008,5,5));//setdateformatCellStylecellStyle=workBook.createCellStyle();DataFormatformat=workBook.createDataFormat();cellStyle.setDataFormat(format.getFormat(yyyy-MM-dd));cell.setCellStyle(cellStyle);2、小数格式cell.setCellValue(1.2);CellStylecellStyle=workBook.createCellStyle();cellStyle.setDataFormat(DataFormat.getBuiltinFormat(0.00));cell.setCellStyle(cellStyle);3、货币格式cell.setCellValue(20000);CellStylecellStyle=workBook.createCellStyle();DataFormatformat=workBook.createDataFormat();cellStyle.setDataFormat(format.getFormat(¥#,##0));cell.setCellStyle(cellStyle);4、百分比格式cell.setCellValue(20);CellStylecellStyle=workBook.createCellStyle();cellStyle.setDataFormat(DataFormat.getBuiltinFormat(0.00%));cell.setCellStyle(cellStyle);5、中文大写格式cell.setCellValue(20000);CellStylecellStyle=workBook.createCellStyle();DataFormatformat=workBook.createDataFormat();cellStyle.setDataFormat(format.getFormat([DbNum2][$-804]0));cell.setCellStyle(cellStyle);6、科学计数格式cell.setCellValue(20000);CellStylecellStyle=workBook.createCellStyle();cellStyle.setDataFormat(DataFormat.getBuiltinFormat(0.00E+00));cell.setCellStyle(cellStyle);这里面一部分使用的是DataFormat.getBuiltinFormat(),是由于这部分格式化是Excel中自带的格式,具体自带的格式大家可以自己打开Excel看看,上图也有截出一部分。到此POI的Excel的单元格格式化方式的一些问题就解决了。
本文标题:POI对Excel单元格的格式的设置参数
链接地址:https://www.777doc.com/doc-2851873 .html