java解析excel

    xiaoxiao2021-12-14  16

    一、问题背景   今天使用jxl.jar包解析excle时,发现一个错误。运行以下程序时会提示如下错误: jxl.read.biff.BiffException: Unable to recognize OLE stream  at jxl.read.biff.CompoundFile.<init>(CompoundFile.java:99)  at jxl.read.biff.File.<init>(File.java:113)  at jxl.Workbook.getWorkbook(Workbook.java:243)  at jxl.Workbook.getWorkbook(Workbook.java:228)  at com.ssm.test.LAAgentTest.testReadExcel2003  代码如下: Java代码  @Test       public void testReadExcel2003()  {       try {               String path = "e:/class.xlsx";               InputStream ins = new FileInputStream(path);               jxl.Workbook tWorkbook = jxl.Workbook.getWorkbook(ins);               jxl.Sheet sheet = tWorkbook.getSheet(0);               System.out.println("第一个工作簿的名称是:"+sheet.getName());               int rows = sheet.getRows();               for(int i=0; i<rows; i++) {                   if(i<2) {                       continue;                   }                   jxl.Cell[] cells = sheet.getRow(i);                   for(int j=0; j<cells.length; j++) {                       System.out.println(cells[j].getContents());                   }               }           } catch(Exception ex) {               ex.printStackTrace();           }                  }   二、解决办法   后来发现是因为jxl不支持2007版excle的解析。因此,打开class.xlsx文件后,选择另存为,保存类型选择2003版本。将代码中的class.xlsx改为另存为excle的名称,运行程序没有问题。   三、使用apache的poi.jar解析excle,兼容2003和2007   废话不说,直接上代码:   Java代码  @Test   public void testReadExcel2007() {           try {               String path = "e:/class.xlsx";               InputStream ins = new FileInputStream(path);               Workbook wb = WorkbookFactory.create(ins);               Sheet sheet = wb.getSheetAt(0);               int columnNum = sheet.getRow(0).getLastCellNum() - sheet.getRow(0).getFirstCellNum();               for (int j = 0; j < sheet.getLastRowNum(); j++) {                   Row row = sheet.getRow(j);                   for (int i = 0; i < columnNum; i++) {                       Cell cell = row.getCell(i, Row.CREATE_NULL_AS_BLANK);                       System.out.println(cell);                   }               }           } catch (Exception ex) {               ex.printStackTrace();           }                  }  
    转载请注明原文地址: https://ju.6miu.com/read-963970.html

    最新回复(0)