目前還是沒有完全進入C#的世界,學校計畫這邊還是很多是使用JAVA來實現實作的部份。
對於學術與研就來講,容易開發的語言對於研究的推進與驗證是有利的。
畢竟寫出來的東西也沒要包成商品去賣,反而是要能互相引用和交流才是重點。
最近的計畫的需求之一是讀取MS Excel檔。其他的語言有其他的解法。
在此我就從Java的角度去寫一下,順便備份一下簡單的撰寫經驗。
其實這個問題之前有解過,也是使用Java,不過是引用JXL這個package。
然而,MS Excel 2007之後使用的格式有一些變動。
所以找了一下,發現apache POI package看似是目前的最佳解。
花了一天的時間,終於了解他運作的原理。
Apache POI下載後有很多分散的jar檔
不過,他的API doc中的說明卻是全部擺在一起的
像是下面這個例子,是一個很簡單的讀xlsx檔的程式。
Vector
temp_result=new Vector();
InputStream inp = new FileInputStream(f);
Workbook wb = WorkbookFactory.create(inp);
Sheet sheet = wb.getSheet("cddd");
int row_count=9;
while(true)
{
Row row = sheet.getRow(row_count++);
if(row==null)
break;
Cell cell = row.getCell(13);
if (cell == null || temp_result.size()>=700)
break;
else
result.add(new Double(cell.getNumericCellValue()));
}
這段程式裡的WorkbookFactory是一個很重要的讀取關鍵。
很直覺的應該會想說,這應該是屬於MS excel部份的程式,所以應該都會放在一起吧!
答案不然,Sheet、Row、Cell這些是都放在一起沒錯。
WorkbookFactory用API查起來也是在同一個路徑下,但是他卻是包在不一樣的.jar裡。
所以如果要方便使用的話,還是無視POI原先裡的目錄,
把所有的.jar都import進來,寫起來會比較方便。
這次就先做這樣簡單的講解,如果之後有在讀取其他MS office檔案再上來分享。