今天幫朋友寫了一段用來處理EXCEL內容的程式,在這裡記錄下自己的學習過程。主要是對EXCEL表格中的內容做分類和統計,使用電腦來做這種重覆的機械性地工作再好不過了。首先,我們需要下載一個java操作excel的開源插件,我使用的是jexcelapi(下載鏈接:http://120.52.73.....
今天幫朋友寫了一段用來處理EXCEL內容的程式,在這裡記錄下自己的學習過程。主要是對EXCEL表格中的內容做分類和統計,使用電腦來做這種重覆的機械性地工作再好不過了。首先,我們需要下載一個java操作excel的開源插件,我使用的是jexcelapi(下載鏈接:http://120.52.73.49/nchc.dl.sourceforge.net/project/jexcelapi/jexcelapi/2.6.6/jexcelapi_2_6_6.zip)。進行解壓,如果使用Eclipse等IDE需要在project->properties->Java Build Path 裡面添加jxl.jar文件。至此,開發環境搭建完成。下麵展開具體的操作:
1、定義數據類型,因為每一列的數據類型不同,這裡採用類數據類型來存儲,採用對象數組來存儲每一行的內容。
class record{ private int num; private char ty; public void SetNum(String s1){ this.num=Integer.parseInt(s1); } public void SetTy(String s2){ this.ty=(char)s2.getBytes()[0]; } public int GetNum(){ return num; } public char GetTy(){ return ty; } } record a[] = new record[row]; for(int i=0;i<row;i++) a[i]= new record();View Code
註意代碼中對對象數組的每一個元素初始化的過程,否則會出現java.lang.NullPointerException的異常拋出。
2、連接到EXCEL,獲取工作空間,我們用到了Workbook和Sheet類,在之前導入的jxl包裡面。
//創建一個讀取excel的容器 Workbook book = Workbook.getWorkbook(new File("G:/test123.xls")); //讀取第一頁 Sheet sheet = book.getSheet(0); //讀取電子錶格和列數和行數 int col = sheet.getColumns(); int row = sheet.getRows();View Code
3、讀取每一個單元格的內容。將單元格的數據讀取到數組中之後,接下來的工作可根據具體情況完成實際操作。
for(int i=0;i<row;i++){ //第一個參數代表列,第二個參數代表行 Cell cell1=sheet.getCell(0, i); Cell cell2=sheet.getCell(1, i); a[i].set_num(cell1.getContents()); a[i].set_ty(cell2.getContents()); }View Code
4、根據需求完成相關操作後,需要將數據寫會Excel表格中,我們用到了WritableWorkbook和WritableSheet兩個類。
//創建一個可寫excel文件 WritableWorkbook bookw = Workbook.createWorkbook(new File("G:/testwtb.xls")); //寫入excel的第一頁 WritableSheet sheetw = bookw.createSheet("first sheet",0); for(int i=0;i<=index;i++){ Number n = new Number(0,i,x[i]); sheetw.addCell(n); Number n1 = new Number(1,i,y[i]); sheetw.addCell(n1); Number n2 = new Number(2,i,z[i]); sheetw.addCell(n2); Number n3 = new Number(3,i,xx[i]); sheetw.addCell(n3); } bookw.write(); bookw.close();View Code
至此,所有操作完成。