java POI导出Excel文件数据库的数据
2018-09-05 07:48:28来源:博客园 阅读 ()
在web开发中,有一个经典的功能,就是数据的导入导出。特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作。这里我简单实现导出Excel文件。
POI jar包下载:http://poi.apache.org/download.html
文章最后面,封装了通用型的poi工具类,直接复制就可使用(任意 List<实体类>)。
导出文件:
前端ajax异步请求代码:
$("#btn").on("click",function () { $.ajax("outStu",{ type:"post", success:function (data) { if (data==200){ alert("导出成功!"); }else { alert("导出失败!"); } } }); })
后台servlet代码:
/** * @author hh */ @WebServlet("/outStu") public class StuOutServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //数据库读取学生对象列表 List<Student> list = new StudentDao().listStudent(); //表头 String[] header={"编号","姓名","年龄","性别","电话","籍贯"}; //保存文件位置+文件名(后缀一定.xls) String url = "/Users/mac/Documents/outStudentData/学生信息.xls"; //调用封装的poi工具类 int code=PoiUtil.OutExcel(list,url,header,"StudenInfo"); //返回响应码(是否成功导出) resp.getWriter().print(code); } }
自己封装简单poi工具类代码:
/** * @author hh */ public class PoiUtil { /** * 导出Excel * @param list 学生对象列表 * @param url 保存位置及文件名 * @param headers 表头名称 * @param title 单元表格名称 * @return */ public static int OutExcel(List<Student> list,String url,String[] headers,String title){ int code=200; // 声明一个工作薄 HSSFWorkbook workbook = new HSSFWorkbook(); // 生成一个表格 HSSFSheet sheet = workbook.createSheet(title); //产生表格标题行 HSSFRow row = sheet.createRow(0); for (short i = 0; i < headers.length; i++) { HSSFCell cell = row.createCell(i); HSSFRichTextString text = new HSSFRichTextString(headers[i]); cell.setCellValue(text); } //遍历集合数据,产生数据行 for (int i=0;i<list.size();i++) { row = sheet.createRow(i+1); //设置行数据 row.createCell(0).setCellValue(list.get(i).getSid()); row.createCell(1).setCellValue(list.get(i).getSname()); row.createCell(2).setCellValue(list.get(i).getSage()); row.createCell(3).setCellValue(list.get(i).getSsex()); row.createCell(4).setCellValue(list.get(i).getTel()); row.createCell(5).setCellValue(list.get(i).getOrigin()); } //定义文件输出流 OutputStream out = null; try { out = new FileOutputStream(url); //写出HSSFWorkbook对象文件 workbook.write(out); //刷新缓存 out.flush(); //关闭文件输出流 out.close(); } catch (IOException e) { code=403; e.printStackTrace(); } return code; } }
利用反射封装的一个通用型poi工具类:
/** * * @param list 泛型集合对象 * @param url 保存位置及文件名 * @param headers 所有表头信息 * @param title 单元表格名称 * @return 响应码 200:成功 403:失败 */ public static int OutExcel2(List<?> list,String url,String[] headers,String title){ int code=200; // 声明一个工作薄 HSSFWorkbook workbook = new HSSFWorkbook(); // 生成一个表格 HSSFSheet sheet = workbook.createSheet(title); //产生表格标题行 HSSFRow row = sheet.createRow(0); //遍历写入表头信息 for (short i = 0; i < headers.length; i++) { HSSFCell cell = row.createCell(i); HSSFRichTextString text = new HSSFRichTextString(headers[i]); cell.setCellValue(text); } //遍历集合数据,产生数据行 for (int i=0;i<list.size();i++) { //因为表头占据了一行所以这里i+1 row = sheet.createRow(i+1); //获取所有字段对象 包括私有 Field[] fields=list.get(i).getClass().getDeclaredFields(); //遍历所有字段对象 for (int j = 0; j < fields.length; j++) { //定义存放值 的变量 Object value= null; try { //打开访问开关 fields[j].setAccessible(true); //获取字段的值 value = fields[j].get(list.get(i)); } catch (IllegalAccessException e) { code=403; e.printStackTrace(); } //获取的值写入到单元格中(我在这里直接toString了,如果规范一点需要类型判断、转换) row.createCell(j).setCellValue(value.toString()); } } //定义文件输出流 OutputStream out = null; try { out = new FileOutputStream(url); //写出HSSFWorkbook对象文件 workbook.write(out); //刷新缓存 out.flush(); //关闭文件输出流 out.close(); } catch (IOException e) { code=403; e.printStackTrace(); } return code; }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash