JXLS部分的合并单元格错误解决办法
来源:互联网 发布:python webui 编辑:程序博客网 时间:2024/05/29 04:33
由XLSTransformer类的方法:
transformMultipleSheetsList(is,objects,newSheetNames,beanName,beanParams,startSheetNum;
产生的,是源码存在bug引起的。
解决方法一:
在Workbook输出之前调用以下方法,可以去除重复的单元格合并
//去除重复的单元格合并
private void mergeNoRepeat(Workbook workbook){
Map<String,CellRangeAddress> map=new HashMap<String,CellRangeAddress>();
for(int i=0;i<workbook.getNumberOfSheets();i++){
Sheet sheet = workbook.getSheetAt(i);
int mergeNum=sheet.getNumMergedRegions();
for(int j=0;j<mergeNum;j++){
CellRangeAddress mergedRegion =sheet.getMergedRegion(0);
map.put(mergedRegion.toString(),mergedRegion);
sheet.removeMergedRegion(0);
}
for(String key:map.keySet()){
sheet.addMergedRegion(map.get(key));
}
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、 修改源码要涉及到重新编译等,很繁琐
修改源码最好是方法重载,不要修改原有的方法,但这样一来修改幅度有些大了,划不来
- JXLS部分的合并单元格错误解决办法
- Jxls导出excel的若干方式总结(十三)-- 动态合并单元格
- java将数据导出,带有合并单元格的excel--jxls技术
- POI shiftRows后合并单元格丢失的解决办法
- Excel单元格的合并
- 合并GridView 的单元格
- GridView 单元格的合并
- 合并 GridView 的单元格
- flexgrid的单元格合并
- 合并 GridView 的单元格
- gridview单元格的合并
- 合并DaaGridView的单元格
- Excel单元格的合并
- ireport的合并单元格
- 自定义的单元格合并
- 报表单元格的合并
- excel的单元格合并
- C#读取Excel中合并单元格解决办法
- POJ3159——Candies
- NI DAQ 编程出现error LNK2001
- Android客户端调用Asp.net的WebService
- Java:按值传递还是按引用传递详细解说
- Linux中环境变量文件及配置
- JXLS部分的合并单元格错误解决办法
- 用SQL完成多记录乱序查找最大值
- 织梦有关文档锚文本链接数量的处理方案
- 关于理解哈希表的除法散列法(取余法)
- linux自动安装
- XOR异或
- ztree获取选中节点
- 关于网页的颜色搭配
- [每日练习]三种冒泡排序方法