ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JavaWeb POI 导出Excel

2021-05-18 14:05:03  阅读:296  来源: 互联网

标签:cellStyle JavaWeb 样式 单元格 Excel 设置 POI row


刚开始实习没有多久,现在公司有个需求:将数据库当中的数据以Excel表格的形式导出来,以前从来没有做过这样子的东西,自己也不会做,怎么办?然后就上网找了一些资料,看看别人写的博客,搞了几个小时,终于搞出来了,顿时心里就有一点小小的成就感,好开心!也顺便把数据导出Excel的过程记录一下,给一些有需要的人参考一下,也给自己以后积累一点经验。

这里我要说明一下:我公司采用的是Spring,Struts2,MyBatis三大框架的,而且我公司项目做完之后的信息展示页面有点复杂,为了方便讲解,我这里采用的是Spring MVC的框架,用一个很简单的例子来说明一下怎么将数据以Excel表的格式导出来而已,过程如下:

Controller层代码如下:

@Controller public class ExportController{ @Autowired private ExportService exportService; @RequestMapping(value = "/export/excel") public void exportExcel(HttpServletRequest request, HttpServletResponse response) throws Exception { //生成一个列表信息 List<Student> list = new ArrayList<Student>(); list.add(new Student(0001,"童年","22","男")); list.add(new Student(0002,"光光","23","女")); list.add(new Student(0003,"丁丁","21","男")); XSSFWorkbook wb = exportService.export(list); response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-disposition", "attachment; filename=student.xlsx"); OutputStream ouputStream = response.getOutputStream(); wb.write(ouputStream); ouputStream.flush(); ouputStream.close(); } }

Service层代码如下:

@Service public class ExportService { //定义表头 String[] excelHeader = {"学号", "姓名", "年龄","性别"}; public XSSFWorkbook export(List<Campaign> list) { //这里需要说明一个问题:如果是 Offices 2007以前的Excel版本,new的对象是: **HSSFWorkbook** ,Offices 2007以后的Excel版本new的对象才是XSSFWorkbook XSSFWorkbook wb = new XSSFWorkbook(); //生成一个工作表 Sheet sheet = wb.createSheet("学生表"); //生成第一行 Row row = sheet.createRow((int) 0); //生成单元格的样式style XSSFCellStyle style = wb.createCellStyle(); style.setAlignment(CellStyle.ALIGN_CENTER); for (int i = 0; i < excelHeader.length; i++) { //获取每一个单元格 Cell cell = row.createCell(i); //给单元格赋值 cell.setCellValue(excelHeader[i]); //设置单元格的样式 cell.setCellStyle(style); } for (int i = 0; i < list.size(); i++) { //得到当前行数的下一行(row.getRowNum():得到当前行数) row = sheet.createRow(row.getRowNum() + 1); Student student = list.get(i); //赋值 row.createCell(0).setCellValue(student.getSno()); row.createCell(1).setCellValue(student.getName()); row.createCell(2).setCellValue(student.getAge()); row.createCell(3).setCellValue(student.getSex()); } return wb; } }

前台JS代码:

<a οnclick="exportExcel()">导出Excel</a>

想要学习Java开发的同学,可以参考千锋成都Java培训班提供的学习大纲;

设置Excel表样式:

1. 生成一个XSSFCellStyle

XSSFCellStyle cellStyle = wb.createCellStyle();####2. 设置样式``` java // 设置单元格的横向和纵向对齐方式,具体参数就不列了,参考HSSFCellStyle cellStyle.setAlignment(HSSFCellStyle.ALIGN_JUSTIFY); cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); //设置单元格的填充方式,以及前景颜色和背景颜色 //设置填充方式(填充图案) cellStyle.setFillPattern(HSSFCellStyle.DIAMONDS); //设置前景色 cellStyle.setFillForegroundColor(HSSFColor.RED.index); //设置背景颜色 cellStyle.setFillBackgroundColor(HSSFColor.LIGHT_YELLOW.index); // 设置单元格底部的边框及其样式和颜色 cellStyle.setBorderBottom(HSSFCellStyle.BORDER_SLANTED_DASH_DOT); cellStyle.setBottomBorderColor(HSSFColor.DARK_RED.index);

3. 将样式应用于单元格,但有些样式只对单元格起作用

cell.setCellStyle(cellStyle);

4. 合并单元格:

//方面里面参数分别为:(起始行,结束行,起始列,结束列) sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, 2));

设置单元格字体样式:

1. 创建XSSFFont对象:

XSSFFont fontfontStyle = wb.createFont();

2. 设置字体样式:

//设置字体样式 fontStyle.setFontName("宋体"); //设置字体高度 fontStyle.setFontHeightInPoints((short)20); //设置字体颜色 font.setColor(HSSFColor.BLUE.index); //设置粗体 fontStyle.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); //设置斜体 font.setItalic(true); //设置下划线 font.setUnderline(HSSFFont.U_SINGLE);

3. 将字体设置到单元格样式:

//字体也是单元格格式的一部分,所以也是属于CellStyle // 将字体对象赋值给单元格样式对象 cellStyle.setFont(font); // 将单元格样式应用于单元格 cell.setCellStyle(cellStyle);

本文也是参考了:Java Web利用POI导出Excel简单例子,和Java中使用poi导入、导出Excel 两篇文章,有兴趣的同学可以看一下!

标签:cellStyle,JavaWeb,样式,单元格,Excel,设置,POI,row
来源: https://blog.csdn.net/q1105441883/article/details/116986116

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有