利用POI技术导出数据到Excel中

来源:互联网 发布:软件智能化的好处 编辑:程序博客网 时间:2024/05/22 03:27

利用POI技术导出Excel文件其实很简单,总结以下整个过程

1.创建一个Excel文件

2.向文件里填充数据

3.将填充了数据的文件保存到硬盘(利用IO流)


代码:

1.先创建一个实体类

package cn.wge.html;import java.util.Date;public class Student {    private int id;      private String name;      private int age;      private Date birth;        public Student(){}        public Student(int id, String name, int age, Date birth)      {          this.id = id;          this.name = name;          this.age = age;          this.birth = birth;      }  }

2.核心代码

package cn.wge.html;import java.io.FileOutputStream;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.List;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFCellStyle;import org.apache.poi.hssf.usermodel.HSSFRow;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSFWorkbook;public class ExcelTest {/**      * @功能:手工构建一个简单格式的Excel      */      @SuppressWarnings({ "unchecked", "rawtypes" })private static List<Student> getStudent() throws Exception      {          List list = new ArrayList();          SimpleDateFormat df = new SimpleDateFormat("yyyy-mm-dd");            Student user1 = new Student(1, "张三", 16, df.parse("1997-03-12"));          Student user2 = new Student(2, "李四", 17, df.parse("1996-08-12"));          Student user3 = new Student(3, "王五", 26, df.parse("1985-11-12"));          list.add(user1);          list.add(user2);          list.add(user3);            return list;      }        @SuppressWarnings({ "deprecation", "rawtypes" })public static void main(String[] args) throws Exception      {          // 第一步,创建一个webbook,对应一个Excel文件          @SuppressWarnings("resource")HSSFWorkbook wb = new HSSFWorkbook();          // 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet          HSSFSheet sheet = wb.createSheet("学生表一");          // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short          HSSFRow row = sheet.createRow((int) 0);          // 第四步,创建单元格,并设置值表头 设置表头居中          HSSFCellStyle style = wb.createCellStyle();          style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式            HSSFCell cell = row.createCell((short) 0);          cell.setCellValue("学号");          cell.setCellStyle(style);          cell = row.createCell((short) 1);          cell.setCellValue("姓名");          cell.setCellStyle(style);          cell = row.createCell((short) 2);          cell.setCellValue("年龄");          cell.setCellStyle(style);          cell = row.createCell((short) 3);          cell.setCellValue("生日");          cell.setCellStyle(style);            // 第五步,写入实体数据 实际应用中这些数据从数据库得到,  行和列都是从0开始        List list = ExcelTest.getStudent();            for (int i = 0; i < list.size(); i++)          {              row = sheet.createRow((int) i + 1);              Student stu = (Student) list.get(i);              // 第四步,创建单元格,并设置值              row.createCell((short) 0).setCellValue((double) stu.getId());              row.createCell((short) 1).setCellValue(stu.getName());              row.createCell((short) 2).setCellValue((double) stu.getAge());              cell = row.createCell((short) 3);              cell.setCellValue(new SimpleDateFormat("yyyy-mm-dd").format(stu                      .getBirth()));          }          // 第六步,将文件存到指定位置          try          {              FileOutputStream fout = new FileOutputStream("E:/students.xls");              wb.write(fout);              fout.close();          }          catch (Exception e)          {              e.printStackTrace();          }      }  }


补充:利用POI打印需要用到相关jar包,我用的是poi-3.14.jar