8
异常代码
这里写你的代码
异常提示 请提供完整的异常提示,记住是全部异常! 建议描述
异常代码
这里写你的代码
异常提示 请提供完整的异常提示,记住是全部异常! 建议描述
百度关键字:POI判断某个单元格是否是合并单元格
private Result isMergedRegion(Sheet sheet,int row ,int column) { int sheetMergeCount = sheet.getNumMergedRegions(); for (int i = 0; i < sheetMergeCount; i++) { CellRangeAddress range = sheet.getMergedRegion(i); int firstColumn = range.getFirstColumn(); int lastColumn = range.getLastColumn(); int firstRow = range.getFirstRow(); int lastRow = range.getLastRow(); if(row >= firstRow && row <= lastRow){ if(column >= firstColumn && column <= lastColumn){ return new Result(true,firstRow+1,lastRow+1,firstColumn+1,lastColumn+1); } } } return new Result(false,0,0,0,0); }
可能是我描述不准确,easyExcel读取行合并的情况,例如 2,3,4行的前三列行合并,利用无模型读取到的第二行数据前三列有值,第三列、第四列的前三行为空,我想第3,4行的前三列同样反回数据。
代码如下:
NoModleDataListener noModleDataListener = new NoModleDataListener(cols); ReadSheet build = EasyExcel.readSheet(i).registerReadListener(noModleDataListener).headRowNumber(1).build(); excelReader.read(build);
`public class NoModleDataListener extends AnalysisEventListener<Map<Integer, String>> {
private static final Logger LOGGER = LoggerFactory.getLogger(NoModleDataListener.class);
private List<String> dataList = Lists.newArrayList();
private Integer headLineMun;
public NoModleDataListener() {
super();
}
public NoModleDataListener(Integer headLineMun) {
this.headLineMun = headLineMun;
}
@Override
public void invoke(Map<Integer, String> data, AnalysisContext analysisContext) {
LOGGER.info("解析到一条数据:{}", JSON.toJSONString(data));
if(!CollectionUtils.isEmpty(data)){
StringBuffer sb = new StringBuffer();
for(int i=0;i<headLineMun;i++){
sb.append(StringUtils.isEmpty(data.get(i))?"":data.get(i));
sb.append(",");
}
String s = sb.toString();
s = s.substring(0,s.length()-1)+";";
dataList.add(s);
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
LOGGER.info("所有数据解析完成!");
}
public List<String> getDataList() {
return dataList;
}
public void setDataList(List<String> dataList) {
this.dataList = dataList;
}
public void clear(){
dataList.clear();
}
}` 您以上代码用POI可以做,如果用EasyExcel不知道怎么写。
我翻了下代码,easyExcel是以单元格为单元处理的,对这种需求可能不太好处理
目前 不支持合并行列。后续会考虑支持