jxl.jar包中读取合并的单元格的方法是什么呢?
我这几天看了这个,是这样操作的。
public static void main(String args[]) throws Exception{
Workbook book = Workbook.getWorkbook(new File("./files/test.xls"));
// 获得第一个工作表对象
Sheet sheet = book.getSheet(0);
int rows = sheet.getRows();
int cols = sheet.getColumns();
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
Cell currCell = sheet.getCell(j, i);
if (isMergeBody(sheet, currCell)) {
System.out.print("----" + "\t");
} else {
System.out.print(currCell.getContents() + "\t");
}
}
System.out.println();
}
}
public static boolean isMergeBody(Sheet sheet, Cell cell) {
//获取所有的合并单元格
Range[] ranges = sheet.getMergedCells();
for (Range range : ranges) {
int startRow = range.getTopLeft().getRow();
int startCol = range.getTopLeft().getColumn();
int endRow = range.getBottomRight().getRow();
int endCol = range.getBottomRight().getColumn();
if (cell.getColumn() > endCol || cell.getColumn() < startCol
|| cell.getRow() < startRow || cell.getRow() > endRow) {
return false;
}
if (range.getTopLeft().equals(cell)) {
return false;
}
}
return true;
}
这样的操作 是可以完成基本的Excel表格的读取,代码是测试过的,可以直接run。
使用上图表格测试,
结果是
XXXX ---- ---- XXXX
XXXX XXXX
WritableSheet.mergeCells(int m,int n,int p,int q);
作用是从(m,n)到(p,q)的单元格全部合并,比如:
WritableSheet sheet=book.createSheet(“第一页”,0);
//合并第一列第一行到第六列第一行的所有单元格
sheet.mergeCells(0,0,5,0);
合并既可以是横向的,也可以是纵向的。合并后的单元格不能再次进行合并,否则会触发异常。