【发布时间】:2021-04-25 13:59:48
【问题描述】:
我正在尝试通过从 mysql 数据库表和 java servlet 和 apache poi 库中获取数据来下载 xls 文件。 我正在创建获取数据、创建 xls 文件并将其刷新到 ServletOutputStream 中。
但是文件正在以不同的格式下载,这不是正确的 xls 文件。 我发现代码是正确的,响应头是正确的。
SQL 查询工作正常。
怎么了?代码在这里...
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet firstSheet = workbook.createSheet("GSTR1");
java.sql.ResultSet rs = conx.createStatement().executeQuery(sql);
java.sql.ResultSetMetaData ds = rs.getMetaData();
HSSFRow rowA1 = firstSheet.createRow(0);
int c1 = 1;
while(c1 < ds.getColumnCount())
{
HSSFCell cellA = rowA1.createCell(c1);
Object obj = ds.getColumnLabel(c1);
if(obj != null)
{
String data = obj.toString();
cellA.setCellValue(data);
}
else
{
cellA.setCellValue("");
}
c1++;
}
int r = 1;
while(rs.next())
{
HSSFRow rowA = firstSheet.createRow(r);
int c = 1;
while(c < ds.getColumnCount())
{
HSSFCell cellA = rowA.createCell(c);
Object obj = rs.getString(c);
if(obj != null)
{
String data = obj.toString();
cellA.setCellValue(data);
}
else
{
cellA.setCellValue("");
}
c++;
}
r++;
}
byte[] byteStream = workbook.getBytes();
response.setContentLength(byteStream.length);
servletOutputStream = response.getOutputStream();
servletOutputStream.write(byteStream);
response.addHeader("Content-disposition", "attachment;filename=file.xls");
response.setContentType("application/vnd.ms-excel");
servletOutputStream.flush();
servletOutputStream.close();
【问题讨论】:
标签: java servlets download xls