利用jxl读取excel合并的单元格的一个小样例
工作中我们可能要把Excel文件的记录保存到数据库,
今天我用jxl读取Excel文件时遇到了合并格的问题,记录例如以下:
如Excel文件例如以下:
读取出来的记录为:
由上图能够看出,合并的单元格仅仅有第一次输出了,这种话,在保存数据
到数据库时就会有数据遗漏,所以做了一定的改造,代码例如以下:
package temp; import java.io.File; import java.io.IOException; import jxl.Range; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; public class SimpleExcelRead { public void readExcel(File file) throws BiffException, IOException { Workbook wb = Workbook.getWorkbook(file);// 从文件流中取得Excel工作区对象 Sheet sheet = wb.getSheet(0); System.out.println(file.getName()); System.out.println("第一个sheet的名称为:" + sheet.getName()); System.out.println("第一个sheet共同拥有:" + sheet.getRows() + "行" + sheet.getColumns() + "列"); System.out.println("详细内容例如以下:"); Range[] rangeCell = sheet.getMergedCells(); for (int i = 0; i < sheet.getRows(); i++) { for (int j = 0; j < sheet.getColumns(); j++) { String str = null; str = sheet.getCell(j, i).getContents(); for (Range r : rangeCell) { if (i > r.getTopLeft().getRow() && i <= r.getBottomRight().getRow() && j >= r.getTopLeft().getColumn() && j <= r.getBottomRight().getColumn()) { str = sheet.getCell(r.getTopLeft().getColumn(), r.getTopLeft().getRow()).getContents(); } } System.out.print(str + "\t"); } System.out.println(); } wb.close(); } public static void main(String[] args) throws BiffException, IOException { SimpleExcelRead sr = new SimpleExcelRead(); File file = new File("test.xls"); sr.readExcel(file); } }
输出结果例如以下:
这样保存数据时,就不会遗漏数据了。