1. 程式人生 > >poi報表匯出

poi報表匯出

   一、 POI簡介

     Apache POI是Apache軟體基金會的開放原始碼函式庫,POI提供API給Java程式對Microsoft Office格式檔案讀和寫的功能。

二、 HSSF概況

            HSSF 是Horrible SpreadSheet Format的縮寫,通過HSSF,你可以用純Java程式碼來讀取、寫入、修改Excel檔案。HSSF 為讀取操作提供了兩類API:usermodel和eventusermodel,即“使用者模型”和“事件-使用者模型”。

    三: POI EXCEL文件結構類

            HSSFWorkbook excel文件物件

            HSSFSheet excel的sheet HSSFRow excel的行

            HSSFCell excel的單元格 HSSFFont excel字型

            HSSFName 名稱 HSSFDataFormat 日期格式

            HSSFHeader sheet頭

            HSSFFooter sheet尾

            HSSFCellStyle cell樣式

            HSSFDateUtil 日期

            HSSFPrintSetup 列印

            HSSFErrorConstants 錯誤資訊表

以上為POI的基本介紹 下面通過例子展開詳解:(運用的開發軟體為IDEA)

pom的節點

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.17-beta1</version>
        </dependency>
建立Student實體類:將其屬性進行get,set封裝
public class Student {
      private Integer id;
      private String name;
      private Integer age;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}
建立測試類Text:
public class Text {
    @Test
public void  test() throws IOException {
       //建立HSSFWorkbook物件
HSSFWorkbook  wk=new HSSFWorkbook();
        //建立HSSFSHeet物件(excel表單)
HSSFSheet  sheet=wk.createSheet("學生表");
         HSSFRow    row=sheet.createRow(0);
         HSSFCell  cell=row.createCell((short)0);
         cell.setCellValue("學生編號");
         cell=row.createCell((short)1);
         cell.setCellValue("學生姓名");
         cell=row.createCell((short)2);
         cell.setCellValue("學生年齡");
        List<Student> list=new ArrayList<Student>();
             Student  student=new Student();
             student.setId(1);
             student.setName("軒軒");
             student.setAge(20);
             Student  student1=new Student();
             student1.setId(2);
             student1.setName("娜娜");
             student1.setAge(16);
             list.add(student);
             list.add(student1);
             for (short i=0;i<list.size();i++){
                 row=sheet.createRow(i+1);
                 row.createCell(0).setCellValue(list.get(i).getId());
                 row.createCell(1).setCellValue(list.get(i).getName());
                 row.createCell(2).setCellValue(list.get(i).getAge());
             }

           /*第一種方式*/
      /*  HSSFRow row=sheet.createRow(0);
        HSSFCell cell=row.createCell(0);
        cell.setCellValue("學生成績表");
        sheet.addMergedRegion(new CellRangeAddress(0,0,0,2));
        HSSFRow  row1=sheet.createRow(1);
        row1.createCell(0).setCellValue("學生編號");
        row1.createCell(1).setCellValue("學生姓名");
        row1.createCell(2).setCellValue("學生年齡");
        HSSFRow   row3=sheet.createRow(2);
        row3.createCell(0).setCellValue("1");
        row3.createCell(1).setCellValue("啦啦");
        row3.createCell(2).setCellValue("16");*/
FileOutputStream  outputStream=new FileOutputStream("E:\\workbooks.xls");
        wk.write(outputStream);
        outputStream.flush();
    }
}
第一種方式結果:
第二種方式結果: