本文小编为大家详细介绍“JavaWeb如何导出excel文件”,内容详细,步骤清晰,细节处理妥当,希望这篇“JavaWeb如何导出excel文件”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
1.在需要的controller里面加入下面接口代码:
/**
* excel导出controller层代码
*
* @param params
* @return
*/
@RequestMapping("exportExcel")
@ResponseBody public String exportExcel(HttpServletResponse response, Map<String, Object> params) {
HSSFWorkbook workbook = excelService.exportExcel(map); try { if (response != null) {
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setHeader("Content-Disposition", "attachment;filename=\"" + new String(("excel名称" + ".xls").getBytes("gb2312"), "ISO8859-1"));
OutputStream out = response.getOutputStream();
workbook.write(out); out.close();
}
} catch (IOException e) {
e.printStackTrace();
} return null;
}
pom.xml文件加上poi的依赖
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.9</version></dependency>
2.在serviceImpl里面加入下面方法:
/**
* 导出excel信息
*
* @param map
* @return
*/
@Override
public HSSFWorkbook exportExcel(Map<String,Object> map) {
//获取需要生成excel数据
List<UserDto> userDtoList=exportMapper.getUserInfo(map);
//如果数据为空,则不继续往下走,直接return
if(userDtoList==null){ return null;
}
HSSFWorkbook wb = new HSSFWorkbook(); // 创建一个Excel的Sheet
HSSFSheet sheet = wb.createSheet("first sheet"); //表头属性名
String[] propertyName={"序号","姓名","性别","年龄","地址"};
// 获取表需要的列数
int length = propertyName.length; // ---------------下面设置表的第一行也就是通常的title----------------------
// 设置行-下面为第一行
HSSFRow row0 = sheet.createRow(0); // 设置列-下面为第一行的第一列
HSSFCell cell00 = row0.createCell(0); // 设置字体
HSSFFont headfont = wb.createFont();
headfont.setFontName("黑体"); // 字体大小
headfont.setFontHeightInPoints((short) 22); // 设置样式
HSSFCellStyle headstyle = wb.createCellStyle(); // 使用了上面设置的字体样式
headstyle.setFont(headfont);
headstyle.setLocked(true); // 自动换行
headstyle.setWrapText(false); // 合并单元格:参数说明:1:开始行 2:结束行 3:开始列 4:结束列
// 注意,在这里使用表字段名-1来作结束列,因为我们是从0开始数的,所以要减去一个
CellRangeAddress range = new CellRangeAddress(0, 0, 0, length - 1); // 将表的合并单元格样式设置进去
sheet.addMergedRegion(range); // 设置表的第一行的第一列的样式
cell00.setCellStyle(headstyle); // 设置表的第一行的第一列的value
cell00.setCellValue("excel标题"); // ---------------下面开始设置表的第二行,通常为字段名----------------------
HSSFRow row1 = sheet.createRow(1); // 字段名使用的字体
HSSFFont columnHeadFont = wb.createFont();
columnHeadFont.setFontName("宋体"); // 字体大小
columnHeadFont.setFontHeightInPoints((short) 10); // 列头的样式
HSSFCellStyle columnHeadStyle = wb.createCellStyle(); // 设置上面已经设置好的字体样式
columnHeadStyle.setFont(columnHeadFont);
columnHeadStyle.setLocked(true);
columnHeadStyle.setWrapText(false); // 设置第二行的行高
row1.setHeight((short) 750); // 创建在这行中的列
HSSFCell cell1 = null; for (int i = 0; i < length; i++) {
cell1 = row1.createCell(i); // 获取数组中的表头字段名
cell1.setCellValue(propertyName[i]); // 给它设置风格
cell1.setCellStyle(columnHeadStyle);
} // ---------------下面开始设置表里面的内容-----------------------------
// 设置字体
HSSFFont font = wb.createFont();
font.setFontName("宋体");
font.setFontHeightInPoints((short) 10); // 设置其风格
HSSFCellStyle style = wb.createCellStyle();
style.setFont(font);
style.setWrapText(false);
HSSFRow row = null;
HSSFCell cell = null; int valueStartRow = 2; // 赋值
for (UserDto userDto : userDtoList) {
row = sheet.createRow(valueStartRow);
cell = row.createCell(0);
cell.setCellValue(userDto.getIndex());
cell.setCellStyle(style);
cell = row.createCell(1);
cell.setCellValue(userDto.getName());
cell.setCellStyle(style);
cell = row.createCell(2);
cell.setCellValue(userDto.getGender());
cell.setCellStyle(style);
cell = row.createCell(3);
cell.setCellValue(userDto.getAge());
cell.setCellStyle(style);
cell = row.createCell(4);
cell.setCellValue(userDto.getAddress());
cell.setCellStyle(style);
valueStartRow++;
} return wb;
}
搞定了,现在可以生成excel了。
读到这里,这篇“JavaWeb如何导出excel文件”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。