/**
* 导出excel方法
*/
public void export() throws IOException {
//1.获取数据
List<Paper> list = 查询的数据;
//2.创建工作簿
Workbook wb = new XSSFWorkbook();
//3.构造sheet
Sheet sheet = wb.createSheet();
//4.创建标题
String [] titles = "论文名称,第一作者姓名".split(",");
Row row = sheet.createRow(0);
int titleIndex=0;
for (String title : titles) {
Cell cell = row.createCell(titleIndex++);
cell.setCellValue(title);
}
//5.填充数据
int rowIndex = 1;
Cell cell=null;
for (Paper paper : list) {
row = sheet.createRow(rowIndex++);
// 论文名称
cell = row.createCell(0);
cell.setCellValue(paper.getName());
// 第一作者姓名
cell = row.createCell(1);
cell.setCellValue(paper.getFirstAuthorName());
}
//6.完成下载
ByteArrayOutputStream os = new ByteArrayOutputStream();
wb.write(os);
DownloadUtils.download(os,response,"论文信息.xlsx");
}
package com.*;
import org.apache.commons.io.output.ByteArrayOutputStream;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class DownloadUtils {
public static void download(ByteArrayOutputStream byteArrayOutputStream, HttpServletResponse response, String fileName) throws IOException {
response.setContentType("application/octet-stream");
fileName = response.encodeURL(new String(fileName.getBytes(),"iso8859-1"));//文件名乱码问题解决
response.addHeader("Content-Disposition","attachment;filename="+ fileName);
response.setContentLength(byteArrayOutputStream.size());
response.addHeader("Content-Length", "" + byteArrayOutputStream.size());
ServletOutputStream outputstream = response.getOutputStream(); //取得输出流
byteArrayOutputStream.writeTo(outputstream); //写到输出流
byteArrayOutputStream.close(); //关闭
outputstream.flush(); //刷数据
}
}