java實現Excel資料匯出

來源:互聯網
上載者:User

標籤:follow   close   pre   工具類   可見   ++   model   href   取值   

java實現Excel資料匯出:

     目前,比較常用的實現Java匯入、匯出Excel的技術有兩種Jakarta POI和Java Excel

Jakarta POI 是一套用於訪問微軟格式文檔的Java API。Jakarta POI有很多組件組成,其中有用於操作Excel格式檔案的HSSF和用於操作Word的HWPF,在各種組件中目前只有用於操作Excel的HSSF相對成熟。官方首頁http://poi.apache.org/index.html,API文檔http://poi.apache.org/apidocs/index.html

 

Jakarta POI HSSF API組件

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

2.3 基本操作步驟

首先,理解一下一個Excel的檔案的組織形式,一個Excel檔案對應於一個workbook(HSSFWorkbook),一個workbook可以有多個sheet(HSSFSheet)組成,一個sheet是由多個row(HSSFRow)組成,一個row是由多個cell(HSSFCell)組成。

基本操作步驟:

 

 下面來看一個動態產生Excel檔案的例子:

 1 //建立HSSFWorkbook對象 2 HSSFWorkbook wb = new HSSFWorkbook(); 3 //建立HSSFSheet對象 4 HSSFSheet sheet = wb.createSheet("sheet0"); 5 //建立HSSFRow對象 6 HSSFRow row = sheet.createRow(0); 7 //建立HSSFCell對象 8 HSSFCell cell=row.createCell(0); 9 //設定儲存格的值10 cell.setCellValue("儲存格中的中文");11 //輸出Excel檔案12 FileOutputStream output=new FileOutputStream("d:\\workbook.xls");13 wkb.write(output);14 output.flush();

 

      HSSF讀取檔案同樣還是使用這幾個對象,只是把相應的createXXX方法變成了getXXX方法即可。可見只要理解了其中原理,不管是讀還是寫亦或是特定格式都可以輕鬆實現,正所謂知其然更要知其所以然。

 

 2:匯出Excel應用執行個體:

請參考:53213130

 

 3:匯出表格的工具類:

excelUtil:

 

 1  public static void downLoadUtil(HttpServletResponse response, List<List<String>> data) { 2         //檔案名稱字--時間戳記 3         long timeMillis = System.currentTimeMillis(); 4         String name = Long.toString(timeMillis); 5         //回應檔的格式 6         response.setContentType("application/vnd.ms-excel"); 7         //建立excel對象 8         HSSFWorkbook workbook = new HSSFWorkbook(); 9 10         ServletOutputStream outputStream = null;11         try {12             // 進行轉碼,使其支援中文檔案名稱13             String codedFileName = new String(name.getBytes("gbk"), "iso-8859-1");14             response.setHeader("content-disposition", "attachment;filename=" + codedFileName + ".xls");15             //往表格中裝入資料:16             //建立Excel 表格17             HSSFSheet sheet = workbook.createSheet("sheet1");18             //遍曆資料:19             for (int i = 0; i < data.size(); i++) {20                 //  取出一行資料21                 List<String> rowData = data.get(i);22                 //建立一行23                 HSSFRow row = sheet.createRow(1);24                 for (int j = 0; j < rowData.size(); j++) {25                     //取出一行中的一個資料26                     String str = rowData.get(j);27                     //建立表格一行的一個格子(列)28                     HSSFCell cell = row.createCell(j);29                     //把資料裝入表格:30                     cell.setCellValue(str);31                 }32             }33             outputStream = response.getOutputStream();34             workbook.write(outputStream);35 36         } catch (Exception e) {37             e.printStackTrace();38             System.out.println("檔案下載失敗!");39         } finally {40             try {41                 //清除緩衝42                 outputStream.flush();43                 //關閉輸出資料流44                 outputStream.close();45             } catch (IOException e) {46                 e.printStackTrace();47             }48         }49         System.out.println("檔案下載成功!");50     }

 

 

 

3-2:將對象轉換為String數組:

工具類:

 

 1 /* 2      * 把Java對象轉換成String數組 3      */ 4     public static String[] getValueRow(Object bean) throws Exception { 5       //運用反射 6         //擷取位元組碼: 7         Class<?> aClass = bean.getClass(); 8         //拿到欄位: 9         Field[] declaredFields = aClass.getDeclaredFields();10         int length = declaredFields.length;11         String[] row = new String[length];12         //從欄位裡面取值:13         for(int i=0;i<length;i++){14             Field declaredField = declaredFields[i];15             String fieldName = declaredField.getName();16             //String methodName ="getUserName";17             String methodName = "get"+fieldName.substring(0,1).toUpperCase()+18                     fieldName.substring(1);19             Method getUserName = aClass.getMethod(methodName);20             Object invoke = getUserName.invoke(bean);21             String value="";22             if(invoke!=null){23                 value=String.valueOf(invoke);24             }25             row[i]=value;26         }27         return row;28     }

 

java實現Excel資料匯出

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.