Spring mvc 无法使用POI下载xlsx文件
嗨,我在poi poc上工作,在webapplication中生成xlsx文件,我能够独立地呈现excel,但当我在我的项目中集成代码库时,我发现了以下错误 下面是在webapplication中下载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
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您找到解决方案了吗?