Apache POI数据格式

我正在使用Apache POIbuild立一些Excel文件,我想确保一些单元格的types是“数字”。

我尝试了以下几点:

style.setDataFormat(HSSFDataFormat.getBuiltinFormat("0")); cell.setCellValue(Integer.valueOf(value)); cell.setCellStyle(style); 

  HSSFDataFormat format = workbook.createDataFormat(); style.setDataFormat(format.getFormat("0")); cell.setCellValue(Integer.valueOf(value)); cell.setCellStyle(style); 

其中值是一个string,我想在单元格中显示为数字。

两种方法都有效。 那么,HSSFDataFormat.getBuiltinFormat()和getFormat()之间有什么区别吗?

正如你在源代码中看到的,函数getFormat首先使用buildinFormats:

 public short getFormat( String format ) { ListIterator i; int ind; if (format.toUpperCase().equals("TEXT")) format = "@"; if ( !movedBuiltins ) { i = builtinFormats.listIterator(); while ( i.hasNext() ) { ind = i.nextIndex(); if ( formats.size() < ind + 1 ) { formats.setSize( ind + 1 ); } formats.set( ind, i.next() ); } movedBuiltins = true; } i = formats.listIterator(); while ( i.hasNext() ) { ind = i.nextIndex(); if ( format.equals( i.next() ) ) return (short) ind; } ind = workbook.getFormat( format, true ); if ( formats.size() <= ind ) formats.setSize( ind + 1 ); formats.set( ind, format ); return (short) ind; }