//注: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...