由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 合併單元格 合併某一列中的某些行 合併單元格 合併...