2013-09-12 1 views
7

Я изучал чтение/запись excel с использованием библиотеки apachePOI, я нашел два типа решений, то есть один из них был достигнут с использованием HSSFWorkbook и другого с Workbook. Теперь у меня есть сомнения, почему существует два решения для достижения единой функциональности.Разница между HSSFWorkbook и Workbook в apache POI

Мой код:

FileInputStream fis=new FileInputStream("D:\\Extras\\SeleniumPractice\\TestData.xlsx");  
Workbook workbook=WorkbookFactory.create(fis); 
Sheet sheet=workbook.getSheet("TestData"); 

Когда я искал:

FileInputStream file = new FileInputStream(new File("C:\\test.xls")); 

              
//Get the workbook instance for XLS file 
HSSFWorkbook workbook = new HSSFWorkbook(file); 

  
//Get first sheet from the workbook 
HSSFSheet sheet = workbook.getSheetAt(0); 

Заранее спасибо .. :)

Благодарности Махеш

ответ

6

Основное различие я знаю,

Workbook - это интерфейс, а HSSFWorkbook, SXSSFWorkbook, XSSFWorkbook - это классы, которые реализуют интерфейс рабочей книги.

общественный интерфейс Рабочая книга Представление высокого уровня книги Excel. Это первый объект, который большинство пользователей будет создавать, будут ли они читать или писать книгу.

общественного конечный класс HSSFWorkbook расширяет POIDocument реализует Рабочим высокого уровня представления .xls книги. Это первый объект, который большинство пользователей будет создавать, будут ли они читать или писать книгу .xls.

подробнее см POI api docs

+0

Спасибо Lot .. :) –

23

Workbook является общий интерфейс, который работает как для HSSF (.xls) и XSSF (.xlsx). Он был введен в POI 3.5, если моя память верна.

Если вы используете общие интерфейсы, как Workbook, вы можете иметь тот же код прозрачно работать как с HSSF и XSSF

Если код только HSSF через HSSFWorkbook, вы можете работать только с файлами .xls. Я предлагаю вам пойти на распространенные из них везде, где возможно

Ваш загрузочный код должен быть что-то вроде:

Workbook wb = WorkbookFactory.create(new File("test.xls")); 
Sheet s = wb.getSheetAt(0); 
.... 

Это автоматически определяет тип файла, и дать вам обратно рабочий объект для либо .xls или .xlsx на основе того, что он находит

+0

Спасибо Лот за ваш ценный ответ .., –

+0

Если это решило вашу проблему, нажмите галочку рядом с ней, чтобы принять ее - [см. Здесь, что это значит] (http: //meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – Gagravarr

-1

Что такое Apache POI?

Apache POI is a popular API that allows programmers to create, modify, 
and display MS Office files using Java programs. 

Apache POI является библиотека с открытым исходным кодом на 100% обеспечивается Apache Software Foundation.

Workbook

Это супер-интерфейс всех классов, которые создают или поддерживают рабочие книги Excel. Он принадлежит к пакету org.apache.poi.ss.usermodel.Эти два класса, которые реализуют этот интерфейс, являются следующими:

(1). HSSFWorkbook: У этого класса есть методы для чтения и записи файлов Microsoft Excel в формате .xls.

(2) .XSSFWorkbook: У этого класса есть методы для чтения и записи Microsoft Excel и файлов OpenOffice xml в формате .xls или .xlsx.

HSSFWorkbook

Это класс высокого уровня в рамках пакета мер org.apache.poi.hssf.usermodel. Он реализует интерфейс рабочей книги и используется для файлов Excel в формате .xls.

Смежные вопросы