Jsp autoSizeColumn不';I don’我不能使用HSSF表POI

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.

我想用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();
语句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;i 这就是错误: HSSFSheet类型的方法autoSizeColumn()未定义。

免责声明:由于OP收到错误“HSSFSheet类型的方法autoSizeColumn(int)未定义”,我假设正在使用库的旧版本

该方法采用
short
而不是
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); }