3. 拷貝、更新Excel工做薄
接下來簡要介紹一下如何更新一個已經存在的工做薄,主要是下面二步操做,第一步是構造只讀的Excel工做薄,第二步是利用已經建立的Excel工做薄建立新的可寫入的Excel工做薄,參考下面的代碼片斷:(完整代碼見ExcelModifying.java)
//建立只讀的Excel工做薄的對象
jxl.Workbook rw = jxl.Workbook.getWorkbook(new File(sourcefile));
//建立可寫入的Excel工做薄對象
jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File(targetfile), rw);
//讀取第一張工做表
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("The value has been modified.");
}
//寫入Excel對象
wwb.write();
//關閉可寫入的Excel對象
wwb.close();
//關閉只讀的Excel對象
rw.close();
之因此使用這種方式構建Excel對象,徹底是由於效率的緣由,由於上面的示例纔是API的主要應用。爲了提升性能,在讀取工做表時,與數據相關的一些輸 出信息,全部的格式信息,如:字體、顏色等等,是不被處理的,由於咱們的目的是得到行數據的值,既使沒有了修飾,也不會對行數據的值產生什麼影響。惟一的 不利之處就是,在內存中會同時保存兩個一樣的工做表,這樣當工做表體積比較大時,會佔用至關大的內存,但如今好像內存的大小並非什麼關鍵因素了。
一旦得到了可寫入的工做表對象,咱們就能夠對單元格對象進行更新的操做了,在這裏咱們沒必要調用API提供的add()方法,由於單元格已經於工做表當中,因此咱們只須要調用相應的setXXX()方法,就能夠完成更新的操做了。
盡單元格原有的格式化修飾是不能去掉的,咱們仍是能夠將新的單元格修飾加上去,以使單元格的內容以不一樣的形式表現。
新生成的工做表對象是可寫入的,咱們除了更新原有的單元格外,還能夠添加新的單元格到工做表中,這與示例2的操做是徹底同樣的。
最後,不要忘記調用write()方法,將更新的內容寫入到文件中,而後關閉工做薄對象,這裏有兩個工做薄對象要關閉,一個是隻讀的,另一個是可寫入的。