poi生成excel下载
程序员文章站
2022-07-13 13:00:55
...
springmvc下载excel
一、springmvc入口
@RequestMapping(value="downloadExcel")
public void downloadExcel(HttpServletRequest request, HttpServletResponse response){
OutputStream outputStream = null;
FileOutputStream fileOutputStream = null;
try {
String fileName = "工作文档.xls";
fileName = URLEncoder.encode(fileName, "UTF-8");
response.reset();
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
outputStream = response.getOutputStream();
List<User> users = buildExcelContent();
// 创建新的Excel 工作簿
Workbook workbook = buildWorkbook(users);
//写本地磁盘
fileOutputStream = new FileOutputStream(new File("D:\\用户目录\\下载\\test.xls"));
workbook.write(fileOutputStream);
//下载
workbook.write(outputStream);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if(outputStream != null){
outputStream.close();
}
if(fileOutputStream != null){
fileOutputStream.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
二、构建内容
private List<User> buildExcelContent(){
List<User> users = new ArrayList<>();
User user = new User();
user.setId(1);
user.setUserName("张三");
users.add(user);
user = new User();
user.setId(2);
user.setUserName("李四");
users.add(user);
user = new User();
user.setId(3);
user.setUserName("王五");
users.add(user);
return users;
}
三、生成excel
private Workbook buildWorkbook(List<User> users){
// 创建新的Excel 工作簿
HSSFWorkbook workbook = new HSSFWorkbook();
// 在Excel工作簿中建一工作表,其名为缺省值, 也可以指定Sheet名称
HSSFSheet sheet = workbook.createSheet();
HSSFSheet sheet = workbook.createSheet("SheetName");
// 用于格式化单元格的数据
HSSFDataFormat format = workbook.createDataFormat();
// 创建新行(row),并将单元格(cell)放入其中. 行号从0开始计算.
HSSFRow row = sheet.createRow((short) 1);
// 设置字体
HSSFFont font = workbook.createFont();
font.setFontHeightInPoints((short) 20); //字体高度
font.setColor(HSSFFont.COLOR_RED); //字体颜色
font.setFontName("黑体"); //字体
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); //宽度
font.setItalic(true); //是否使用斜体
//font.setStrikeout(true); //是否使用划线
// 设置单元格类型
HSSFCellStyle cellStyle = workbook.createCellStyle();
cellStyle.setFont(font);
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); //水平布局:居中
cellStyle.setWrapText(true);
// 创建每行单元格
HSSFCell cell = null;
for(int i=0; i< users.size(); i++){
row = sheet.createRow(i);
cell = row.createCell(0);
cell.setCellValue(users.get(i).getId());
cell = row.createCell(1);
cell.setCellValue(users.get(i).getUserName());
}
return workbook;
}
四、参考
上一篇: poi(2)---excel导出
下一篇: poi导出excel