jxl 通过 sheet.getMergedCells()方法获取excel中合并的单元格
需注意:
Sheet sheet = workbook.getSheet(sheetIndex); √ OK
Sheet sheet = workbook.getSheets()[0]; × 获取不到
Workbook workbook = Workbook.getWorkbook(in);
Sheet sheet = workbook.getSheet(sheetIndex);
/* readSheet */
private static List readSheet(Sheet sheet) {
List list = new ArrayList();
Range[] mergedCells = sheet.getMergedCells();
String value;
for (int row = 0, rowLen = sheet.getRows(); row < rowLen; row++) {
int colLen = sheet.getColumns();
String[] rowData = new String[colLen];
for (int col = 0; col < colLen; col++) {
Range range = getRange(mergedCells, row, col);
if (range != null) {
value = sheet.getCell(range.getTopLeft().getColumn(), range.getTopLeft().getRow()).getContents();
} else {
value = sheet.getCell(col, row).getContents();
}
rowData[col] = value != null ? value.trim() : "";
}
list.add(rowData);
}
return list;
}
/* getRange */
private static Range getRange(Range[] ranges, int row, int col) {
for (int i = 0; i < ranges.length; i++) {
Range range = ranges[i];
if (row >= range.getTopLeft().getRow() && row <= range.getBottomRight().getRow()
&& col >= range.getTopLeft().getColumn() && col <= range.getBottomRight().getColumn()) {
return range;
}
}
return null;
}