java導出execl報表


 1. 下載jar包:

官方下載:http://poi.apache.org/download.html這里可以下載到它的最新版本和文檔,目前最新版本是3.7,這里使用比較穩定的3.6版。

百度網盤下載:https://pan.baidu.com/s/1mjhoaWK  密碼:pkur

 

2. 將jar包加入到項目中:

將下載好的jar包加入到WEBINFO目錄下的lib文件夾中,Eclipse用戶選中jar包然后右擊選擇Build Path選項, Idea用戶選中jar包然后右擊選擇Add as Library選項即可。

 如果是用maven的可自行到maven中央倉庫搜索poi然后選擇對應的版本即可,也可以直接將下面代碼復制到pom.xml。

 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->

<dependency>

<groupId>org.apache.poi</groupId>

<artifactId>poi</artifactId>

<version>3.6</version>

</dependency>

 

3. Jakarta POI HSSF API組件:

HSSF(用於操作Excel的組件)提供給用戶使用的對象在rg.apache.poi.hssf.usermodel包中,主要部分包括Excel對象,樣式和格式,有以下幾種常用的對象:

常用組件:

HSSFWorkbook     excel的文檔對象

HSSFSheet            excel的表單

HSSFRow               excel的行

HSSFCell                excel的格子單元

HSSFFont               excel字體

樣式:

HSSFCellStyle         cell樣式

 

4.基本操作步驟:

首先,我們應該要知道的是,一個Excel文件對應一個workbook,一個workbook中有多個sheet組成,一個sheet是由多個行(row)和列(cell)組成。那么我們用poi要導出一個Excel表格

的正確順序應該是:

1、用HSSFWorkbook打開或者創建“Excel文件對象”

2、用HSSFWorkbook對象返回或者創建Sheet對象

3、用Sheet對象返回行對象,用行對象得到Cell對象

4、對Cell對象讀寫。

5、將生成的HSSFWorkbook放入HttpServletResponse中響應到前端頁面

 

5. 導出Excel應用實例:

 工具類代碼:

 package com.yq.util;

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 ExcelUtil {

 

    /**

     * 導出Excel

     * @param sheetName sheet名稱

     * @param title 標題

     * @param values 內容

     * @param wb HSSFWorkbook對象

     * @return

     */

    public static HSSFWorkbook getHSSFWorkbook(String sheetName,String []title,String [][]values, HSSFWorkbook wb){

 

        // 第一步,創建一個HSSFWorkbook,對應一個Excel文件

        if(wb == null){

            wb = new HSSFWorkbook();

        }

 

        // 第二步,在workbook中添加一個sheet,對應Excel文件中的sheet

        HSSFSheet sheet = wb.createSheet(sheetName);

 

        // 第三步,在sheet中添加表頭第0,注意老版本poiExcel的行數列數有限制

        HSSFRow row = sheet.createRow(0);

 

        // 第四步,創建單元格,並設置值表頭 設置表頭居中

        HSSFCellStyle style = wb.createCellStyle();

        style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 創建一個居中格式

 

        //聲明列對象

        HSSFCell cell = null;

 

        //創建標題

        for(int i=0;i<title.length;i++){

            cell = row.createCell(i);

            cell.setCellValue(title[i]);

            cell.setCellStyle(style);

        }

 

        //創建內容

        for(int i=0;i<values.length;i++){

            row = sheet.createRow(i + 1);

            for(int j=0;j<values[i].length;j++){

                //將內容按順序賦給對應的列對象                row.createCell(j).setCellValue(values[i][j]);

            }

        }

        return wb;

    }

}

 

 

控制器代碼:

 

@Controller

@RequestMapping(value = "/report")public class ReportFormController extends BaseController {

 

    @Resource(name = "reportService")

    private ReportManager reportService;

 

    /**

     * 導出報表

     * @return

     */

    @RequestMapping(value = "/export")

    @ResponseBody

    public void export(HttpServletRequest request,HttpServletResponse response) throws Exception {

           //獲取數據

           List<PageData> list = reportService.bookList(page);

 

           //excel標題

          String[] title = {"名稱","性別","年齡","學校","班級"};

 

          //excel文件名

          String fileName = "學生信息表"+System.currentTimeMillis()+".xls";

 

       //sheet

          String sheetName = "學生信息表";

 

      for (int i = 0; i < list.size(); i++) {

            content[i] = new String[title.length];

            PageData obj = list.get(i);

            content[i][0] = obj.get("stuName").tostring();

            content[i][1] = obj.get("stuSex").tostring();

            content[i][2] = obj.get("stuAge").tostring();

            content[i][3] = obj.get("stuSchoolName").tostring();

            content[i][4] = obj.get("stuClassName").tostring();

      }

      //創建HSSFWorkbook

      HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook(sheetName, title, content, null);

 

      //響應到客戶端

      try {

        this.setResponseHeader(response, fileName);

           OutputStream os = response.getOutputStream();

           wb.write(os);

           os.flush();

           os.close();

       } catch (Exception e) {

           e.printStackTrace();

       }

  }

    //發送響應流方法

    public void setResponseHeader(HttpServletResponse response, String fileName) {

        try {

            try {

                fileName = new String(fileName.getBytes(),"ISO8859-1");

            } catch (UnsupportedEncodingException e) {

                // TODO Auto-generated catch block                e.printStackTrace();

            }

            response.setContentType("application/octet-stream;charset=ISO8859-1");

            response.setHeader("Content-Disposition", "attachment;filename="+ fileName);

            response.addHeader("Pargam", "no-cache");

            response.addHeader("Cache-Control", "no-cache");

        } catch (Exception ex) {

            ex.printStackTrace();

        }

    }
}    

 

 

前端頁面代碼:

<button id="js-export" type="button" class="btn btn-primary">導出Excel</button>

$('#js-export').click(function(){

            window.location.href="/report/exportBooksTable.do;
});

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM