工做須要讀取excel裏面的行內容,使用java實現較爲簡單。java
在最開始,嘗試使用 jxl-2.6.12 來實現讀取excel 的行內容。可是按照網上的方法,程序根本沒法正確處理文件流。通過谷姐的一番努力,發現jxl只能支持excel 2000而已(或許我用的方法有誤)。jxl 操做excel 2007 無望,無奈放棄之。apache
以後轉到apache 的poi 庫,看到它的文檔裏面說到,均可以支持office 2010了,對於2007 應該不在話下。果斷轉投poi 的懷抱。windows
poi官方網址:http://poi.apache.org/xss
我下載的是poi 3.10版本。測試
解壓包後,將下面的jar包加入工程。spa
測試poi代碼.net
package rw_excel; import static org.junit.Assert.*; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import org.apache.poi.hssf.extractor.ExcelExtractor; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; public class test_poi { @BeforeClass public static void setUpBeforeClass() throws Exception { } @AfterClass public static void tearDownAfterClass() throws Exception { } @Test public void test() throws IOException { // fail("Not yet implemented"); String file_dir = "test.xlsx"; Workbook book = null; book = getExcelWorkbook(file_dir); Sheet sheet = getSheetByNum(book,0); int lastRowNum = sheet.getLastRowNum(); System.out.println("last number is "+ lastRowNum); for(int i = 0 ; i <= lastRowNum ; i++){ Row row = null; row = sheet.getRow(i); if( row != null ){ System.out.println("reading line is " + i); int lastCellNum = row.getLastCellNum(); System.out.println("lastCellNum is " + lastCellNum ); Cell cell = null; for( int j = 0 ; j <= lastCellNum ; j++ ){ cell = row.getCell(j); if( cell != null ){ String cellValue = cell.getStringCellValue(); System.out.println("cell value is \n" + cellValue); } } } } } public static Sheet getSheetByNum(Workbook book,int number){ Sheet sheet = null; try { sheet = book.getSheetAt(number); // if(sheet == null){ // sheet = book.createSheet("Sheet"+number); // } } catch (Exception e) { throw new RuntimeException(e.getMessage()); } return sheet; } public static Workbook getExcelWorkbook(String filePath) throws IOException{ Workbook book = null; File file = null; FileInputStream fis = null; try { file = new File(filePath); if(!file.exists()){ throw new RuntimeException("文件不存在"); }else{ fis = new FileInputStream(file); book = WorkbookFactory.create(fis); } } catch (Exception e) { throw new RuntimeException(e.getMessage()); } finally { if(fis != null){ fis.close(); } } return book; } // }
excel 文件就在工程的目錄下,直接填寫了文件名。開始時,寫的是絕對路徑,多是windows下 「\」的問題,出現文件不存在的狀況。緣由不明。excel
程序很是簡單,不少的代碼就是拷貝參考文章的。這裏感謝「北京大鵬」這位博主,博文寫得很詳細。code
jxl 參考文章:http://heisetoufa.iteye.com/blog/1932073blog
poi參考文章:http://blog.csdn.net/qq522935502/article/details/8374118