JXLS部分的合併單元格錯誤解決辦法

2021-06-26 08:53:48 字數 1646 閱讀 4845

由xlstransformer類的方法:

transformmultiplesheetslist(is,objects,newsheetnames,beanname,beanparams,startsheetnum;

產生的,是原始碼存在bug引起的。

解決方法一:

在workbook輸出之前呼叫以下方法,可以去除重複的單元格合併

//去除重複的單元格合併

private

voidmergenorepeat(workbook workbook)

for(string key:map.keyset())

map.clear();

}解決方法二:

修改原始碼:

util類

1、 areregionsequal(cellrangeaddress  region1, cellrangeaddress  region2)方法,

region2

改為region1

2、  copyrow(sheet  srcsheet, sheet destsheet, row  srcrow, row  destrow, string  expressiontoreplace, string  expressionreplacement) 方法

注釋掉set語句,改為形參 , 如下圖

3、 copysheets(sheet  newsheet, sheet sheet,string  expressiontoreplace, string  expressionreplacement)方法

加引數 如下圖

xlstransformer類

transformmultiplesheetslist(inputstreamis, list  objects, list  newsheetnames, string beanname, map beanparams,int startsheetnum)方法

新增set語句,如下圖

很顯然,產生bug的原因是因為set集合建立的時機不對,若按照原先copyrow方法內建立set集合來儲存merge cell,那麼只能儲存本行內的合併,而跨行合併的就不能儲存了。而areregionequal方法出現的卻是很低階的錯誤了,很顯然四個屬性在比較相等性嘛,就不必多說了!

強烈建議呢,使用方法一比較好,原因有以下幾點:

1、     原始碼本身就比較雜亂,沒有必要的註解,胡亂新增更會亂上加亂,

2、     修改原始碼要涉及到重新編譯等,很繁瑣

修改原始碼最好是方法過載,不要修改原有的方法,但這樣一來修改幅度有些大了,划不來

合併單元格

青年 老大,最近在 中合併單元格,總是不明就裡,好像是合併對了,有時也是蒙的,您能不能就此指條明路?禪師 這個問題很簡單,合併單元格分為跨行合併和跨列合併,這是標籤的rowspan和colspan屬性問題,已知3x3 禪師 首先說說跨行合併rowspan,由於我們書寫 的習慣是標籤包裹便簽,因此書寫...

單元格合併??

單元格合併著實讓人為難!使用的dev 的gridcontrol控制項,實現資料繫結很方便,但是在網上查怎麼都沒有找到如何實現單元格的合併。所以只好作罷。然後計畫採用flexcell,但是是付費的。使用了一下和excel差類似,實現的樣式也很豐富。可以滿足報表顯示的要求,但是要是能自己使用datagr...

單元格跨行合併,單元格跨列合併

protected voidgridview1 onrowcreated object sender,gridviewroweventargs e if e.row.rowtype datacontrolrowtype.datarow region 合併單元格 合併某一列中的某些行 合併單元格 合併...