我想用autoSizeColumn调整列的宽度,但它不起作用,任何想法?
Statement StReporte = conexion.createStatement();
ResultSet rs_marcador = StReporte.executeQuery("call sprep_reportesmensuales('2014-06-01','2014-07-01',6,2)");
ResultSetMetaData rsmd = rs_marcador.getMetaData();
int columnsNumber = rsmd.getColumnCount();
FileOutputStream fileOut = new FileOutputStream("C:/Servidorweb/apache-tomcat-6.0.37/webapps/reportes_mensuales/reporte_prueba.xls");
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet worksheet = workbook.createSheet("POI Worksheet");
int controw = 0;
while(rs_marcador.next())
{
HSSFRow row = worksheet.createRow((short) controw);
for(int i = 0; i < columnsNumber; i++)
{
HSSFCell cellA1 = row.createCell((short) i);
cellA1.setCellValue(rs_marcador.getString(i+1));
}
worksheet.autoSizeColumn();
controw++;
}
workbook.write(fileOut);
fileOut.flush();
fileOut.close();
这是错误: 对于HSSFSheet类型,未定义autoSizeColumn()方法。
答案 0 :(得分:1)
从Apache POI JavaDocs on Sheet,您会看到autoSizeColumn
的方法签名是an int as a parameter,这是自动调整大小的列
因此,您的代码是:
while(rs_marcador.next())
{
for(int i = 0; i < columnsNumber; i++)
{
HSSFCell cellA1 = row.createCell((short) i);
cellA1.setCellValue(rs_marcador.getString(i+1));
}
worksheet.autoSizeColumn();
}
取而代之的是:
while(rs_marcador.next())
{
for(int i = 0; i < columnsNumber; i++)
{
HSSFCell cellA1 = row.createCell((short) i);
cellA1.setCellValue(rs_marcador.getString(i+1));
}
}
for(int i = 0; i < columnsNumber; i++)
{
worksheet.autoSizeColumn(i);
}
请注意,您应该只在最后自动调整列的大小,因为这是一个相当慢的操作
答案 1 :(得分:0)
免责声明:由于OP收到错误&#34;方法autoSizeColumn(int)未定义类型HSSFSheet&#34;我假设该库的旧版本正在使用中。
该方法需要short
而不是int
(在旧版本的库中),因此您必须进行类型转换(就像您已经使用createCell
一样):
for(int i = 0; i < columnsNumber; i++)
{
worksheet.autoSizeColumn((short)i);
}
你也应该等到最后这样做,所以把它放在你的while循环之后,因为在while循环中你会多次这样做而你只需要做一次。所以在workbook.write(fileOut);