基于POI的Excel表格数据导出
2017-03-17 21:18
344 查看
首先来个自我介绍,16届毕业,现就业一家电力行业公司。工作也差不多半年了,尝试一下写博客,看看能不能为我们伟大的Java贡献点绵薄之力。。好吧,有点心虚。
好了,进入主题。去公司的第一个任务就是导出页面数据。。之前也没做过啊,这啥子?懵逼脸。赶紧百度。。有了,用POI啊!nice,看了一遍,小case啦,搞个包调几个方法就OK啦。简单说就像种树嘛,挖坑,种树,挖坑,种树;一个个挖一颗颗填就完了,只是一颗树占一行。
好,那我们就开始种树。jar包:
poi-3.12.jar
poi-examples-3.12.jar
poi-excelant-3.12.jar
poi-ooxml-schemas-3.12.jar
poi-ooxml-3.12.jar
poi-scratchpad-3.12.jar
简单示例:
我就先简单的导出来吧,不写工具类其他的了,之后会写一个导出树的,有兴趣可以去瞅瞅。
好了,进入主题。去公司的第一个任务就是导出页面数据。。之前也没做过啊,这啥子?懵逼脸。赶紧百度。。有了,用POI啊!nice,看了一遍,小case啦,搞个包调几个方法就OK啦。简单说就像种树嘛,挖坑,种树,挖坑,种树;一个个挖一颗颗填就完了,只是一颗树占一行。
好,那我们就开始种树。jar包:
poi-3.12.jar
poi-examples-3.12.jar
poi-excelant-3.12.jar
poi-ooxml-schemas-3.12.jar
poi-ooxml-3.12.jar
poi-scratchpad-3.12.jar
简单示例:
package cn.lbb.entity; import java.io.Serializable; /** * 简单JavaBean。 * @author LOGOD * */ public class Tree implements Serializable{ private static final long serialVersionUID = 1L; private String id; private String name; private String type; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getType() { return type; } public void setType(String type) { this.type = type; } public Tree() {} public Tree(String id, String name, String type) { super(); this.id = id; this.name = name; this.type = type; } }
我就先简单的导出来吧,不写工具类其他的了,之后会写一个导出树的,有兴趣可以去瞅瞅。
package cn.lbb.main; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.Serializable; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; import javax.swing.JOptionPane; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFFont; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import cn.lbb.entity.Tree; public class ExcelTableDemo { /** * 转化器:将满足JavaBean规范的对象封装的数据转化到一个有序列表中 * @param bean JavaBean * @return 列表 */ public static List<String> bean2List(Serializable bean) { List<String> beanList = new ArrayList<String>(); if (bean != null) { Class<? extends Serializable> beanClass = bean.getClass(); Field[] beanFields = beanClass.getDeclaredFields(); Field.setAccessible(beanFields, true); //强暴一把 for (Field beanField : beanFields) { String fieldName = beanField.getName(); if ("serialVersionUID".equals(fieldName)) { continue; } try { Method beanMethod = beanClass.getMethod( "get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1)); String value = (String) beanMethod.invoke(bean); beanList.add(value); } catch (Exception e) { e.printStackTrace(); } } } return beanList; } @SuppressWarnings("resource") public static void main(String[] args) { //我们要种一堆树,分两堆 List<Tree> trees1 = new ArrayList<Tree>(); List<Tree> trees2 = new ArrayList<Tree>(); for (int i = 0; i < 100; i++) { trees1.add(new Tree(String.valueOf(i), "我是A的树" + i, "类型" + i)); trees2.add(new Tree(String.valueOf(i), "我是B的树" + i, "类型" + i)); } //开始干活 HSSFWorkbook wb = new HSSFWorkbook(); //创建工作簿对象,这相当于一个要种树的公园 HSSFSheet sheetA = wb.createSheet("区域A"); //创建Excel中的页签对象,看作公园左边的区域 HSSFSheet sheetB = wb.createSheet("区域B"); //创建Excel中的新的页签对象,看作公园右边的区域 /* 页签可以有多个,我只是打个比句,你也可以把公园划分为ABCD等等个区域 */ //从A区域开始种tree1的树 //创建一个单元个的样式对象,由工作簿创建,可以作用整个工作簿 HSSFCellStyle style = wb.createCellStyle(); /* 设置样式:我这里简单设置一下好了 */ //样式字体居中 style.setAlignment(HSSFCellStyle.ALIGN_CENTER); /* 创建一种字体对象,由工作簿创建,可以作用整个工作簿,需放在样式中,才能作用于单元格 */ HSSFFont font = wb.createFont(); font.setFontName("宋体"); //设置字体样式 style.setFont(font); /* 开始创建单元格 */ for (int i = 0; i < trees1.size(); i++) { List<String> treeList = bean2List(trees1.get(i)); //将tree对象的数据转化到列表 HSSFRow row = sheetA.createRow(i); //创建行 for (int j = 0; j < treeList.size(); j++) { HSSFCell cell = row.createCell(j); //创建列 cell.setCellStyle(style); //设置这个单元个的样式 cell.setCellValue(treeList.get(j));//赋值 } } /* 同理区域B */ //可以设置另一种样式,注意:需操作另一个对象,否则后面的设置会覆盖前面的设置 HSSFCellStyle style2 = wb.createCellStyle(); style2.setAlignment(HSSFCellStyle.ALIGN_LEFT); HSSFFont font2 = wb.createFont(); font2.setFontName("雅黑"); //设置字体样式 style2.setFont(font2); /* 开始创建单元格 */ for (int i = 0; i < trees2.size(); i++) { List<String> treeList = bean2List(trees2.get(i)); //将tree对象的数据转化到列表 HSSFRow row = sheetB.createRow(i); //创建行 for (int j = 0; j < treeList.size(); j++) { HSSFCell cell = row.createCell(j); //创建列 cell.setCellStyle(style2); //设置这个单元个的样式 cell.setCellValue(treeList.get(j));//赋值 } } /* OK到这里就可以导出了 */ try { //默认导出到D盘下 FileOutputStream out = new FileOutputStream("D://Demo.xls"); wb.write(out); //写入输出流 out.close(); JOptionPane.showMessageDialog(null, "导出成功!"); } catch (FileNotFoundException e) { JOptionPane.showMessageDialog(null, "导出失败!"); e.printStackTrace(); } catch (IOException e) { JOptionPane.showMessageDialog(null, "导出失败!"); e.printStackTrace(); } } }
相关文章推荐
- java中使用poi导出excel表格数据并且可以手动修改导出路径
- 使用poi实现导出excel数据表格
- 基于struts2、spring、ibatis、poi的案例,将数据导出致Excel中
- 简单的POI导出JSP页面表格数据到excel
- js导出表格数据到word、excel
- delphi 表格数据导出到excel
- [JAVA]Java导出Excel数据的一种方法(完美实现,包含表格线)
- javascript调用activeXObject 导出页面表格数据到excel
- POI : 解决大批量数据导出Excel产生内存溢出的方案
- 使用JDBC+POI把Excel中的数据导出到MySQL
- 使用JDBC+POI把Excel中的数据导出到MySQL
- ext导出表格数据到excel中
- POI导出数据到EXCEL经典实现
- 表格控件(GridView)数据格式化导出到Excel并下载.
- Datatable或Gridview中的数据导出为excel表格数据(Asp.net C#)
- 将word表格中数据导出到Excel
- 用POI把数据导出为Excel
- 从页面表格导出数据到Excel
- 导出数据到Excel表中--用Apache的POI实现简单封装
- 用POI把数据导出为Excel