2014-01-13 4 views
1

Я попытался версии POI 1.poi-Src-3.9-20121203 также с 2.poi-бен-3,10-beta2-20130904Как читать и .xsl и .xlsx с помощью POI?

Но не умеет читать .xls файл Получение ниже ошибки " org.apache.poi.POIXMLException: org.apache.poi.openxml4j.exceptions.InvalidFormatException: пакет должен содержать часть типа контента [M1.13] "

Примечание: Я могу прочитать файл .xlsx.

+0

Что такое код у вас есть пытался? Поддерживает ли xssf оба формата? Также это не связано с селеном. – Akbar

ответ

0

Это для .xlsx

try {    
      // Get the workbook object for XLSX file 
      XSSFWorkbook wBook = new XSSFWorkbook(new FileInputStream(path)); 
      // Get first sheet from the workbook 
      XSSFSheet sheet = (XSSFSheet) wBook.getSheetAt(0); 
      XSSFRow row; 
      XSSFCell cell; 
      // Iterate through each rows from first sheet 
      Iterator<org.apache.poi.ss.usermodel.Row> rowIterator = sheet.iterator(); 
        while (rowIterator.hasNext()) { 
       StringBuffer data = new StringBuffer(); 
       row = (XSSFRow) rowIterator.next(); 

       // For each row, iterate through each columns 
       Iterator<Cell> cellIterator = row.cellIterator(); 
       int count = 0; 
       while (cellIterator.hasNext()) { 
        count++; 
        cell = (XSSFCell) cellIterator.next(); 

         if(cell.getCellType() == Cell.CELL_TYPE_NUMERIC) 
         { 
           data.append(cell.getRawValue()+ ";"); 
         }else if(cell.getCellType() == Cell.CELL_TYPE_BOOLEAN) 
         { 
          data.append(cell.getBooleanCellValue() + ";"); 
         } else if(cell.getCellType() == Cell.CELL_TYPE_STRING) 
         { 
          data.append(cell.getStringCellValue() + ";"); 
         } 
         else if(cell.getCellType() == Cell.CELL_TYPE_BLANK) 
         { 
          data.append("" + ";"); 
         } 
         else 
         { 
          data.append(cell + ";"); 
         } 
       } 
       String finalStr = data.toString().substring(0, (data.length()-1)); 
       System.out.print(finalStr); 
      } 

     } catch (Exception ioe) { 
      ioe.printStackTrace(); 
     } 

Тиа для .xls

try {    
      // Get the workbook object for XLS file 
      HSSFWorkbook wBook = new HSSFWorkbook(new FileInputStream(path)); 
      // Get first sheet from the workbook 
      HSSFSheet sheet = (HSSFSheet) wBook.getSheetAt(0); 
      HSSFRow row; 
      HSSFCell cell; 
      // Iterate through each rows from first sheet 
      Iterator<org.apache.poi.ss.usermodel.Row> rowIterator = sheet.iterator(); 
        while (rowIterator.hasNext()) { 
       StringBuffer data = new StringBuffer(); 
       row = (HSSFRow) rowIterator.next(); 

       // For each row, iterate through each columns 
       Iterator<Cell> cellIterator = row.cellIterator(); 
       int count = 0; 
       while (cellIterator.hasNext()) { 
        count++; 
        cell = (HSSFCell) cellIterator.next(); 

         if(cell.getCellType() == Cell.CELL_TYPE_NUMERIC) 
         { 
           data.append(cell.getRawValue()+ ";"); 
         }else if(cell.getCellType() == Cell.CELL_TYPE_BOOLEAN) 
         { 
          data.append(cell.getBooleanCellValue() + ";"); 
         } else if(cell.getCellType() == Cell.CELL_TYPE_STRING) 
         { 
          data.append(cell.getStringCellValue() + ";"); 
         } 
         else if(cell.getCellType() == Cell.CELL_TYPE_BLANK) 
         { 
          data.append("" + ";"); 
         } 
         else 
         { 
          data.append(cell + ";"); 
         } 
       } 
       String finalStr = data.toString().substring(0, (data.length()-1)); 
       System.out.print(finalStr); 
      } 

     } catch (Exception ioe) { 
      ioe.printStackTrace(); 
     } 
+0

перейдите по адресу http://poi.apache.org/ для получения дополнительной информации. прочитайте его. – v0ld3m0rt

0

Попробуйте с помощью org.apache.poi.ss.usermodel.Workbook. Он может быть использован как для .xls и .xlsx файл

Workbook workbook = null; 
     if (suffix.equalsIgnoreCase("xls")) { 
      workbook = (Workbook) new HSSFWorkbook(new POIFSFileSystem(
        new FileInputStream(assetFile))); 

     } else if (suffix.equalsIgnoreCase("xlsx")) { 
      InputStream inp = new FileInputStream(assetFile); 
      workbook = new XSSFWorkbook(inp); 
      inp.close(); 
     }
0

Вам нужно пои-OOXML читать XLSX формат тоже. Добавить эту Maven зависимость

<dependency> 
    <groupId>org.apache.poi</groupId> 
    <artifactId>poi-ooxml</artifactId> 
    <version>3.15</version> 
</dependency> 

Для использования XLs

Workbook = new HSSFWorkbook(new FileInputStream(new File("fileName"))); 

Для XLSX использовать

Workbook = workbook = new XSSFWorkbook(new FileInputStream(new File("fileName"))); 

Если вы не знаете, формат файла перед чтением и иногда найти .xls или. Расширение файла xlsx может не всегда быть достаточно хорошим, чтобы найти фактический формат файла. В таком случае делать, как этот

Workbook workbook; 
try { 
    workbook = new HSSFWorkbook(new FileInputStream(new File("fileName"))); 
    System.out.println(" Reading XLS file"); 
} catch (OfficeXmlFileException e) { 
    System.out.println(" Reading XLSX file"); 
    workbook = new XSSFWorkbook(new FileInputStream(new File("fileName"))); 
} 

отдых все равно .xls и .xlsx

Простой способ создать учебное пособие по автоопределение, то вход

Workbook workbook = WorkbookFactory.create(new File("fileName")); 
Смежные вопросы