20150714 Created By BaoXinjianhtml
1、摘要java
JAVA EXCEL API是一個操做excel的組件包,能夠知足對通常的excel操做的須要api
JAVA EXCEL API是一開放源碼項目,經過它Java開發人員能夠讀取Excel文件的內容、建立新的Excel文件、更新已經存在的Excel文件。post
使用該API非Windows操做系統也能夠經過純Java應用來處理Excel數據表。由於它是使用Java編寫的,因此咱們在Web應用中能夠經過JSP、Servlet來調用API實現對Excel數據表的訪問。
網站
1. Excel文件中的對象和JXL組件中的對象的對應關係spa
(1). Excel文件包括的對象:Excel文件 工做簿 單元格操作系統
(2). Jxl組件包包括的對象:Workbook Sheet Cell.net
2. Excel文件中的對象和jxl組件中的對象的對應關係excel
(1). Excel文件 ------- workbookcode
(2). 工做簿 ------- sheet
(3). 單元格 ------- cell
3. 下載方式
官方網站 http://www.andykhan.com/jexcelapi/ 下載最新版本(本人下的是jexcelapi_2_6_12.tar.gz,解壓後將裏面的jxl.jar複製到WEB-INF/lib目錄下面便可)
Java Excel API的jar包能夠經過如下URL得到:
http://sourceforge.net/projects/jexcelapi/files/jexcelapi/2.6.6/jexcelapi_2_6_6.zip/download
(包括全部版本):http://sourceforge.net/projects/jexcelapi/files/
2、處理Excel文件中的數據的過程
選取Excel文件A選擇工做簿B選擇單元格C讀取信息A釋放資源。調用jxl的方法操做excel文件過程以下:
Step1. 經過Workbook的靜態方法getWorkbook選取Excel文件
Workbook workbook = Workbook.getWorkbook(new File(execlPath));
Step2. 經過Workbook的getSheet方法選擇第一個工做簿(從0開始)
Sheet sheet = workbook.getSheet(0);
Step3. 經過Sheet方法的getCell方法選擇單元格
Cell cell = sheet.getCell(2,1); //獲取位置爲C2單元格
Step4. 經過Cell的getContents方法把單元格中的信息以字符的形式讀取出來
String stringc2 = cell.getContents();
Step5. 操做完成,釋放資源.
workbook.close();
3、OAF使用JXL
1. 查看Java的版本
2. 下載JXL包,JXL版本必須對應相應的JAVA的版本
http://www.andykhan.com/jexcelapi/download.html
3.1 加載Project Properties中Jar包
3.2 加載Project Properties後,導入jxl包後無問題
4.1 加入Embedded OC4J Server Preferences
4.2 加入JAR包後,變異運行時無問題
4、簡單寫Excel的過程
1. 寫Excel的簡單代碼
import java.io.IOException; import java.io.OutputStream; import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import jxl.write.WriteException; public class SimpleExcelWrite { public void createExcel(OutputStream os) throws WriteException,IOException{ //建立工做薄
WritableWorkbook workbook = Workbook.createWorkbook(os); //建立新的一頁
WritableSheet sheet = workbook.createSheet("First Sheet",0); //建立要顯示的內容,建立一個單元格,第一個參數爲列座標,第二個參數爲行座標,第三個參數爲內容
Label xuexiao = new Label(0,0,"學校"); sheet.addCell(xuexiao); Label zhuanye = new Label(1,0,"專業"); sheet.addCell(zhuanye); Label jingzhengli = new Label(2,0,"專業競爭力"); sheet.addCell(jingzhengli); Label qinghua = new Label(0,1,"清華大學"); sheet.addCell(qinghua); Label jisuanji = new Label(1,1,"計算機專業"); sheet.addCell(jisuanji); Label gao = new Label(2,1,"高"); sheet.addCell(gao); Label beida = new Label(0,2,"北京大學"); sheet.addCell(beida); Label falv = new Label(1,2,"法律專業"); sheet.addCell(falv); Label zhong = new Label(2,2,"中"); sheet.addCell(zhong); Label ligong = new Label(0,3,"北京理工大學"); sheet.addCell(ligong); Label hangkong = new Label(1,3,"航空專業"); sheet.addCell(hangkong); Label di = new Label(2,3,"低"); sheet.addCell(di); //把建立的內容寫入到輸出流中,並關閉輸出流
workbook.write(); workbook.close(); os.close(); } }
5、簡單讀Excel的過程
1. 讀Excel的簡單代碼
import java.io.File; import java.io.FileInputStream;
import java.io.InputStream; import jxl.Cell; import jxl.CellType; import jxl.Sheet; import jxl.Workbook; import jxl.write.Label; public class ExcelOperater {
public static void main(String[] args) {
jxl.Workbook readwb = null;
try
{
//構建Workbook對象, 只讀Workbook對象
//直接從本地文件建立Workbook
InputStream instream = new FileInputStream("F:/紅樓人物.xls");
readwb = Workbook.getWorkbook(instream);
//Sheet的下標是從0開始
//獲取第一張Sheet表
Sheet readsheet = readwb.getSheet(0);
//獲取Sheet表中所包含的總列數
int rsColumns = readsheet.getColumns();
//獲取Sheet表中所包含的總行數
int rsRows = readsheet.getRows(); //獲取指定單元格的對象引用
for (int i = 0; i < rsRows; i++) { for (int j = 0; j < rsColumns; j++) { Cell cell = readsheet.getCell(j, i);
System.out.print(cell.getContents() + " "); } System.out.println(); } //利用已經建立的Excel工做薄,建立新的可寫入的Excel工做薄
jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File("F:/紅樓人物1.xls"), readwb); //讀取第一張工做表 jxl.write.WritableSheet ws = wwb.getSheet(0); //得到第一個單元格對象 jxl.write.WritableCell wc = ws.getWritableCell(0, 0); //判斷單元格的類型, 作出相應的轉化 if (wc.getType() == CellType.LABEL) { Label l = (Label) wc; l.setString("新姓名"); } //寫入Excel對象 wwb.write(); wwb.close(); } catch (Exception e) { e.printStackTrace(); } finally { readwb.close(); } } }
Thanks and Regards