目的:导出的Excel模板,某些单元格要是文本形式,如下图
我之前想当然的用cell.setCellType(HSSFCell.CELL_TYPE_STRING),但是发现没有效果。实际POI对Excel单元格格式的设置是用
HSSFDataFormat
这个类。如下代码可以实现设置为文本格式:
HSSFCellStyle cellStyle= workbook.createCellStyle(); HSSFDataFormat format = workbook.createDataFormat(); cellStyle.setDataFormat(format.getFormat("@")); cell.setCellStyle(cellStyle);
关于其他格式,可以参考POI的doc
0, "General" 1, "0" 2, "0.00" 3, "#,##0" 4, "#,##0.00" 5, "($#,##0_);($#,##0)" 6, "($#,##0_);[Red]($#,##0)" 7, "($#,##0.00);($#,##0.00)" 8, "($#,##0.00_);[Red]($#,##0.00)" 9, "0%" 0xa, "0.00%" 0xb, "0.00E+00" 0xc, "# ?/?" 0xd, "# ??/??" 0xe, "m/d/yy" 0xf, "d-mmm-yy" 0x10, "d-mmm" 0x11, "mmm-yy" 0x12, "h:mm AM/PM" 0x13, "h:mm:ss AM/PM" 0x14, "h:mm" 0x15, "h:mm:ss" 0x16, "m/d/yy h:mm" // 0x17 - 0x24 reserved for international and undocumented 0x25, "(#,##0_);(#,##0)" 0x26, "(#,##0_);[Red](#,##0)" 0x27, "(#,##0.00_);(#,##0.00)" 0x28, "(#,##0.00_);[Red](#,##0.00)" 0x29, "_(*#,##0_);_(*(#,##0);_(* \"-\"_);_(@_)" 0x2a, "_($*#,##0_);_($*(#,##0);_($* \"-\"_);_(@_)" 0x2b, "_(*#,##0.00_);_(*(#,##0.00);_(*\"-\"??_);_(@_)" 0x2c, "_($*#,##0.00_);_($*(#,##0.00);_($*\"-\"??_);_(@_)" 0x2d, "mm:ss" 0x2e, "[h]:mm:ss" 0x2f, "mm:ss.0" 0x30, "##0.0E+0" 0x31, "@" - This is text format. 0x31 "text" - Alias for "@"
第一个参数是index 后面一个是String 格式的format
我用的是poi-3.2-FINAL做的测试。