1.為項目添加POI
POI官網鏈接

點進去之后下載(上邊的是編譯好的類,下邊的是源代碼)

解壓文件夾,把下面三個文件復制到WebComtent>WEB-INF>lib文件夾下

再把這三個文件復制到Tomcat的lib文件夾下,否則Tomcat會因為找不到類而報錯(這個地方郁悶了一上午)
讀取“.xls”格式使用 import org.apache.poi.hssf.usermodel.*;包的內容,例如:HSSFWorkbook
讀取“.xlsx”格式使用 import org.apache.poi.xssf.usermodel.*; 包的內容,例如:XSSFWorkbook
讀取兩種格式使用 import org.apache.poi.ss.usermodel.* 包的內容,例如:Workbook
由於我是讀取xslx文件所以使用以上幾個jar文件。
注意:

上圖中的兩個文件夾中也有我們需要的jar文件,具體是哪幾個忘記了(當然為了保險也可以把所有的都放進WebContent>WEN-INF>lib下再BuildPath進項目),沒關系,一會運行的過程中會報錯,根據錯誤信息再去找到相關的jar文件BuildPath進去就好,注意還要再Tomcat>lib下放置一份副本。
2.讀取Excel文件
1 //遍歷一個Excel文件<br>private void getExcelData(File file) { 2 3 System.out.println("now in getExcelData" ); 4 System.out.println("get file name:"+file.getName().toString()); 5 6 XSSFWorkbook workBook= null; 7 try { 8 workBook = new XSSFWorkbook(file); 9 10 11 int sheetCount = workBook.getNumberOfSheets(); //Sheet的數量 12 System.out.println("num of sheet is : "+sheetCount); 13 14 //遍歷每個sheet 15 for(int i=0;i<sheetCount;i++) 16 { 17 XSSFSheet sheet = workBook.getSheetAt(i); 18 //獲取總行數 19 int rowCount = sheet.getPhysicalNumberOfRows(); 20 System.out.println("num of row : "+ rowCount); 21 System.out.println("i now in sheet : "+ i); 22 //遍歷每一行 23 for (int r = 0; r < rowCount; r++) { 24 XSSFRow row = sheet.getRow(r); 25 //獲取總列數 26 int cellCount = row.getPhysicalNumberOfCells(); 27 28 //遍歷每一列 29 for (int c = 0; c < cellCount; c++) { 30 XSSFCell cell = row.getCell(c); 31 32 String cellValue = null; 33 34 switch (cell.getCellTypeEnum()) { 35 case STRING: 36 //System.out.println("celltype is string"); 37 cellValue = cell.getStringCellValue(); 38 break; 39 case NUMERIC: 40 //System.out.println("celltype is Number");//整數,小數,日期 41 cellValue = String.valueOf(cell.getNumericCellValue()); 42 break; 43 case BOOLEAN: 44 //System.out.println("celltype is Boolean"); 45 cellValue = String.valueOf(cell.getBooleanCellValue()); 46 break; 47 case FORMULA: 48 //System.out.println("celltype is Formula");//公式 49 cellValue = "錯誤,不能為公式"; 50 break; 51 case BLANK: 52 //System.out.println("celltype is Blank");//空白 53 cellValue = cell.getStringCellValue(); 54 break; 55 case ERROR: 56 //System.out.println("celltype is Error"); 57 cellValue = "錯誤"; 58 break; 59 60 default: 61 //System.out.println("celltype : default"); 62 cellValue = "錯誤"; 63 break; 64 } 65 66 System.out.println(cellValue.toString()); 67 } 68 } 69 } 70 71 72 } catch (IOException e) { 73 System.out.println("File Error IOException : "+e.getMessage()); 74 } 75 catch (Exception e) { 76 // TODO: handle exception 77 } 78 finally { 79 try { 80 workBook.close(); 81 } catch (Exception e) { 82 // TODO Auto-generated catch block 83 e.printStackTrace(); 84 System.out.println("workBook.close()&fileInputStream.close() Error : "+e.getMessage()); 85 } 86 87 System.out.println("Try Catch : finally"); 88 } 89 90 System.out.println("hi feipeng8848 getExcelData is done"); 91 }
