poi 輸出Excel顯示內容

     在業務系統中多少回接觸到Excel解析。在java開發平臺下選擇 Apache POI是一個很是明智的選擇,POI提供很是完善API來讀取或寫入Microsoft Office Excel。java

     目前對導入的數據都會進行二次加工,咱們開發模式就是先把Excel中的內容直接原樣導入數據庫對應的一張數據表中,而後再進行二次加工。什麼是原樣,那就是咱們在excle看到是什麼樣的,導入的數據就是什麼樣的,那怎樣實現呢?數據庫

   首先考慮到,exce另存爲csv,而後在解析csv就能夠,excel另存爲csv後,以下ide

   

    彷佛這樣就能夠了,但用戶上傳的Excel文件經過後臺轉換csv文件也麻煩(PS:其實我都不知道怎麼轉,有知道的朋友還但願能分享下),說好不是用POI的麼,那麼接下來咱們瞭解下POI中處理Excel的一些信息lua

  

     從上圖得知,POI類中帶HSSF的是處理03格式的,XSSF是處理07以上格式的,廢話很少說了,先看看原樣輸出的一個重要角色 DataFormatter,spa

     查閱官方文檔,紅框的地方清楚說明了,就是現實Excel中的現實的文本excel

      

     這裏對於公式類型的還須要判斷下,code

      

1     DataFormatter df = new DataFormatter();
2     if (cell.getCellType() == cell.CELL_TYPE_FORMULA) {
3         FormulaEvaluator formulaEval = wb.getCreationHelper().createFormulaEvaluator();
4         value = df.formatCellValue(cell, formulaEval);
5     } else {
6         value = df.formatCellValue(cell);
7     }

     

  因此就這麼一句代碼,就取得的單元格中顯示的值,算是大工搞成。ps:解析Excle的完整代碼orm

 1 private ArrayList<String[]> GetExcel(String filename)
 2             throws FileNotFoundException, IOException, Exception {
 3         File f = new File(filename);
 4         ArrayList data = new ArrayList();
 5         if (f.exists()) {
 6             InputStream fis = new FileInputStream(f);
 7             Workbook wb = WorkbookFactory.create(fis);
 8             Sheet fst = wb.getSheetAt(0);
 9             int rowcount = fst.getLastRowNum();
10             Row headrow = fst.getRow(0);
11             int colcount = headrow.getLastCellNum();
12             for (int ri = 0; ri <= rowcount; ri++) {
13                 System.out.println("");
14                 System.out.println("第" + ri + "行數據");
15                 String[] colValues = new String[colcount];
16                 Row row = fst.getRow(ri);
17                 for (int i = 0; i < colcount; i++) {
18                     Cell cell = row.getCell(i);
19                     String value = "";
20                     if (cell != null) {
21                         DataFormatter df = new DataFormatter();
22                         if (cell.getCellType() == cell.CELL_TYPE_FORMULA) {
23                             FormulaEvaluator formulaEval = wb.getCreationHelper().createFormulaEvaluator();
24                             value = df.formatCellValue(cell, formulaEval);
25                         } else {
26                             value = df.formatCellValue(cell);
27                         }
28                     }
29                     colValues[i] = value;
30                     System.out.print(colValues[i] + "--");
31                 }
32                 data.add(colValues);
33             }
34         }
35         f.delete();
36         return data;
37     }
View Code

                                                                                                                                                                                  2015-12-04 blog

相關文章
相關標籤/搜索