標籤: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資料匯出