Spring mvc 无法使用POI下载xlsx文件

Spring mvc 无法使用POI下载xlsx文件,spring-mvc,servlets,apache-poi,Spring Mvc,Servlets,Apache Poi,嗨,我在poi poc上工作,在webapplication中生成xlsx文件,我能够独立地呈现excel,但当我在我的项目中集成代码库时,我发现了以下错误 下面是在webapplication中下载xlsx文件的代码库 XSSFWorkbook workbook = new XSSFWorkbook(); XSSFSheet spreadsheet = workbook.createSheet("Sheet1"); XSSFRow row = spreadsheet.c

嗨,我在poi poc上工作,在webapplication中生成xlsx文件,我能够独立地呈现excel,但当我在我的项目中集成代码库时,我发现了以下错误

下面是在webapplication中下载xlsx文件的代码库

    XSSFWorkbook workbook = new XSSFWorkbook();
    XSSFSheet spreadsheet = workbook.createSheet("Sheet1");
    XSSFRow row = spreadsheet.createRow(0);
    XSSFCell cell;


    while (response.nextResultSet()) {
        resultSet = response.getResultSet();
        Object[] columnMetaData = resultSet.getColumnNames();
        int columnCount = columnMetaData.length;
          //Columns Loop 
        ArrayList<String> columns = new ArrayList<String>();
        for (int i = 1; i < columnCount; i++) {
            String columnName = (String) columnMetaData[i];
            columns.add(columnName);
            cell = row.createCell(i-1);
            cell.setCellValue(columnName);
         } 

        int i=1;
          while (resultSet.nextRow()) {
             row = spreadsheet.createRow(i);
             i++; // counter for each row of data
            for (int j = 0; j < columnMetaData.length; j++)
            {
                String keyVal = String.valueOf(columnMetaData[j]);
                String value = (String)resultSet.getValue(keyVal);
                cell = row.createCell(j);
                cell.setCellValue(value);


            }
        }

      log.info("value if i--->" + i);     

      for (int k = 1; k < columnCount; k++) {
            spreadsheet.autoSizeColumn(k-1);
        }
    }   

    ByteArrayOutputStream outByteStream = new ByteArrayOutputStream();
    workbook.write(outByteStream);

    context.getResponse().setHeader("content-disposition", "inline;filename=" + calendar.getTimeInMillis() + ".xlsx");
        context.getResponse().setContentType("application/Excel");
        context.getRequest().setAttribute("called_from", "excel");
        //context.getResponse().setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        //context.getResponse().setHeader("Content-Disposition", "attachment; filename=testxls.xlsx");
    }

       OutputStream os = null;


        os = context.getResponse().getOutputStream();
        byte [] outArray = is.toByteArray();
        context.getResponse().setContentLength(outArray.length);
        os.write(outArray);
        log.info(os.toString());
        os.flush();
xssf工作簿=新的xssf工作簿();
XSSFSheet电子表格=工作簿.createSheet(“Sheet1”);
XSSFRow row=电子表格.createRow(0);
XSSFCell细胞;
while(response.nextResultSet()){
resultSet=response.getResultSet();
对象[]columnMetaData=resultSet.getColumnNames();
int columnCount=columnMetaData.length;
//列循环
ArrayList columns=新的ArrayList();
对于(int i=1;i”的值+i);
for(int k=1;k
如果您修复代码以发送
.xlsx
文件的正确mimetype,会发生什么情况?我收到一个错误,例如excel无法打开文件,因为文件格式或文件扩展名无效。请验证文件是否已损坏,即使我尝试使用以下代码段上下文。getResponse().setContentType(“application/vnd.openxmlformats of cedocument.spreadsheetml.sheet”);
byte[]outArray=is.toByteArray()
哪里是
是从哪里来的?@ChandraKuncham你找到解决办法了吗?如果你修改代码为
.xlsx
文件发送正确的mimetype会发生什么情况?我遇到了一个类似excel无法打开文件的错误,因为文件格式或文件扩展名无效。请验证文件是否已损坏,即使我尝试了以下snippet context.getResponse().setContentType(“application/vnd.openxmlformats of cedocument.spreadsheetml.sheet”);
byte[]outArray=is.tobyterarray();
从何而来?@ChandraKuncham您找到解决方案了吗?