Jsp autoSizeColumn不';I don’我不能使用HSSF表POI
我想用autoSizeColumn调整列的宽度,但不起作用,知道吗Jsp autoSizeColumn不';I don’我不能使用HSSF表POI,jsp,apache-poi,Jsp,Apache Poi,我想用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.
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();
语句streport=conexion.createStatement();
结果集rs_marcador=Streport.executeQuery(“调用sprep_报告手册('2014-06-01','2014-07-01',6,2)”);
ResultSetMetaData rsmd=rs_marcador.getMetaData();
int columnsumber=rsmd.getColumnCount();
FileOutputStream fileOut=新的FileOutputStream(“C:/Servidorweb/apache-tomcat-6.0.37/webapps/reportes\u mensuales/reporte\u prueba.xls”);
HSSFWorkbook=新的HSSFWorkbook();
HSSFSheet工作表=工作簿.createSheet(“POI工作表”);
int controw=0;
while(rs_marcador.next())
{
HSSFRow row=工作表.createRow((短)controw);
for(int i=0;ishort
而不是int
(在库的较旧版本上),因此您必须进行类型转换(就像您已经在使用createCell
):
for(int i=0;i
你也应该等到最后再做,所以把它放在你的while循环之后,因为在while循环中你会做很多次,你只需要做一次。所以把它放在工作簿的前面代码>从中,您将看到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));
}
worksheet.autoSizeColumn();
}
while(rs_marcador.next())
{
for(int i=0;i
相反,需要:
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);
}
while(rs_marcador.next())
{
for(int i=0;i
请注意,您应该只在最末端自动调整列的大小,因为这是一个相当慢的操作我将它放在for中,使用
I
它无论如何都不起作用。通常,在处理结束时,每列只调用一次。例如,首先设置单元格的值,然后在for循环中运行autoSizeColumn()以覆盖所有列。for(int i=0;i
希望这就是你给单元格赋值的地方。尝试为循环再放一个for(int i=0;iwhile(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);
}