我正在使用Apache POI构建一些excel文件,我想确保某些单元格的类型为" Number"。
我尝试了以下内容:
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);
其中value是我想在单元格中显示为Number的字符串。
这两种方法都有效。那么,两者之间是否存在差异? HSSFDataFormat.getBuiltinFormat()和getFormat()?
答案 0 :(得分:1)
正如您在源代码中看到的,函数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;
}