中山做app网站公司,海珠电子商务网站建设,大数据营销系统怎么样,北京公司买房最近在做导出Excel的功能封装#xff0c;遇到了几个问题#xff1a;单元格宽度问题数据不是数字格式问题格式化了之后显示的不是数字而是######的问题(其实是因为单元格宽度不够导致的无法显示格式化之后的内容)下面先说说解决方法#xff1a;1、单元格宽度问题这个问题有两…最近在做导出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值如下所示内置数据类型编号General0010.002#,##03#,##0.004($#,##0_);($#,##0)5($#,##0_);[Red]($#,##0)6($#,##0.00);($#,##0.00)7($#,##0.00_);[Red]($#,##0.00)80%90.00%0xa0.00E000xb# ?/?0xc# ??/??0xdm/d/yy0xed-mmm-yy0xfd-mmm0x10mmm-yy0x11h:mm AM/PM0x12h:mm:ss AM/PM0x13h:mm0x14h:mm:ss0x15m/d/yy h:mm0x16保留为过国际化用0x17 - 0x24(#,##0_);(#,##0)0x25(#,##0_);[Red](#,##0)0x26(#,##0.00_);(#,##0.00)0x27(#,##0.00_);[Red](#,##0.00)0x28_($*#,##0_);_($*(#,##0);_($* \-\_);_(_)0x29_(*#,##0.00_);_(*(#,##0.00);_(*\-\??_);_(_)0x2a_($*#,##0.00_);_($*(#,##0.00);_($*\-\??_);_(_)0x2b_($*#,##0.00_);_($*(#,##0.00);_($*\-\??_);_(_)0x2cmm:ss0x2d[h]:mm:ss0x2emm:ss.00x2f##0.0E00x30 - This is text format0x31使用下面的代码来设置1234CellStylecellStyleworkBook.createCellStyle();DataFormatformatworkBook.createDataFormat();cellStyle.setDataFormat(format.getFormat());cell.setCellStyle(cellStyle);接下来我会举例日期、小数、货币、百分比、中文大写、科学计数几种方式的格式化1、日期格式Java123456cell.setCellValue(newDate(2008,5,5));//set date formatCellStylecellStyleworkBook.createCellStyle();DataFormatformatworkBook.createDataFormat();cellStyle.setDataFormat(format.getFormat(yyyy-MM-dd));cell.setCellStyle(cellStyle);2、小数格式Java1234cell.setCellValue(1.2);CellStylecellStyleworkBook.createCellStyle();cellStyle.setDataFormat(DataFormat.getBuiltinFormat(0.00));cell.setCellStyle(cellStyle);3、货币格式Java12345cell.setCellValue(20000);CellStylecellStyleworkBook.createCellStyle();DataFormatformatworkBook.createDataFormat();cellStyle.setDataFormat(format.getFormat(¥#,##0));cell.setCellStyle(cellStyle);4、百分比格式Java1234cell.setCellValue(20);CellStylecellStyleworkBook.createCellStyle();cellStyle.setDataFormat(DataFormat.getBuiltinFormat(0.00%));cell.setCellStyle(cellStyle);5、中文大写格式Java12345cell.setCellValue(20000);CellStylecellStyleworkBook.createCellStyle();DataFormatformatworkBook.createDataFormat();cellStyle.setDataFormat(format.getFormat([DbNum2][$-804]0));cell.setCellStyle(cellStyle);6、科学计数格式Java1234cell.setCellValue(20000);CellStylecellStyleworkBook.createCellStyle();cellStyle.setDataFormat(DataFormat.getBuiltinFormat(0.00E00));cell.setCellStyle(cellStyle);这里面一部分使用的是DataFormat.getBuiltinFormat()是由于这部分格式化是Excel中自带的格式具体自带的格式大家可以自己打开Excel看看上图也有截出一部分。到此POI的Excel的单元格格式化方式的一些问题就解决了。