關於POI與JXL的比較

2021-08-30 23:26:03 字數 2040 閱讀 5110

//注:this.fworkbook是乙個hsshworkbook,請自行在外部new

public void copyrows

(string psourcesheetname,

string ptargetsheetname,

int pstartrow, int pendrow,

int pposition)

sourcesheet = this.fworkbook.getsheet(psourcesheetname);

targetsheet = this.fworkbook.getsheet(ptargetsheetname);

//拷貝合併的單元格

for (i = 0; i < sourcesheet.getnummergedregions(); i++)

} //設定列寬

for (i = pstartrow; i <= pendrow; i++)

break;}}

//拷貝行並填充資料

for (;i <= pendrow; i++)

targetrow = targetsheet.createrow(i - pstartrow + pposition);

targetrow.setheight(sourcerow.getheight());

for (j = sourcerow.getfirstcellnum(); j < sourcerow.getlastcellnum(); j++)

targetcell = targetrow.createcell(j);

targetcell.setencoding(sourcecell.getencoding());

targetcell.setcellstyle(sourcecell.getcellstyle());

ctype = sourcecell.getcelltype();

targetcell.setcelltype(ctype);

switch (ctype)}}

}

這個函式有兩個問題暫時無法解決:

a、只能在同乙個workbook裡面使用,跨workbook總是拷不過去,不知道為什麼?

b、由於在拷貝行時也把行高也拷過去了,如果往這些單元格裡寫入的資料長度超過單元格長度,那麼他們不會自動調整行高!

3、公式的問題

poi對excel公式的支援是相當好的,但是我發現乙個問題,如果公式裡面的函式不帶引數,比如now()或today(),那麼你通過getcellformula()取出來的值就是now(attr(semivolatile))和today(attr(semivolatile)),這樣的值寫入excel是會出錯的,這也是我上面copyrow的函式在寫入公式前要呼叫parseformula的原因,parseformula這個函式的功能很簡單,就是把attr(semivolatile)刪掉,我把它的**貼出來:

private string parseformula(string ppoiformula)

else

return result.tostring();

}

至於為什麼會出現attr(semivolatile),還需要大家的探索精神!

4、向excel寫入的問題。

1、不支援寫入;

2、支援寫入,通過eschergraphics2d這個class實現。於是我就去查eschergraphics2d這個class,發現這個class提供了n個drawimage方法,喜出望外的我開始寫**,結果調了一天,一直看不到效果,黔驢技窮的我在萬般無奈下只好跟蹤進drawimage這個函式內部,經過n個函式呼叫後在最底層函式發現了最終答案:

public boolean drawimage(image image, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1,

int sx2, int sy2, color bgcolor, imageobserver imageobserver)

POI與JXL 操作excel比較

poi是乙個標準的apache專案,提供了完整的介面,不過也正因為這個poi用起來會很比較複雜不容易上手。相比較jxl就用起來就方便很多,功能也顯得少了一些,不過應付起常見操作還是綽綽有餘,jxl不支援設定列印區域。在我接觸的很多專案中,都是採用的jxl,可以說jxl用poi 20 的 實現了poi...

POI與JXL 操作excel比較

poi是乙個標準的apache專案,提供了完整的介面,不過也正因為這個poi用起來會很比較複雜不容易上手。相比較jxl就用起來就方便很多,功能也顯得少了一些,不過應付起常見操作還是綽綽有餘,jxl不支援設定列印區域。在我接觸的很多專案中,都是採用的jxl,可以說jxl用poi 20 的 實現了poi...

關於poi的坑

今天遇上乙個坑,關於poi公式計算結果出錯的問題,自己打斷點debug了半天,雖然沒徹底搞清楚為啥不行,但所幸找到了解決辦法。下面不廢話,直接貼乾貨,原先的公式處理 如下 1 final formulaevaluator evaluator wb.getcreationhelper createfo...