Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Понадобилось использовать Excel


Автор: Fameing 17.3.2006, 14:19
Как возможно реализовать следующие действия. Необходимо данные получение с БД вставить в шаблон Excel и отдать клиенту.

Автор: batigoal 17.3.2006, 14:35
http://jakarta.apache.org/poi/ умеет взаимодействовать с Exel'ем.

Автор: Fameing 17.3.2006, 14:58
Ну для того чтобы использовать POI то нужно для начала данние из бази представить в виде XML а етого нехочется делать и очень долгий процес получится. С бази берется в среднем 15000 ти записей.

Автор: tux 17.3.2006, 15:10
Зачем XML? Без него все прекрасно обходится.
Код

wb = new HSSFWorkbook();
sheet = wb.createSheet("Title");

Connection c = DriverManager.getConnection(url, user, password);
Statement st = c.createStatement();
        
ResultSet specRs = st.executeQuery(specSelectQuery);
        
while (specRs.next()) {
    String specName = specRs.getString("speciality_name");
    
        HSSFCellStyle cellStyle = wb.createCellStyle();
        cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        HSSFFont f = wb.createFont();
        f.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
        cellStyle.setFont(f);
        
        HSSFRow row = sheet.createRow(rowNum++);
        
        HSSFCell cell0 = row.createCell((short)0);
        cell0.setEncoding(HSSFCell.ENCODING_UTF_16);
        cell0.setCellValue(specName);    
        cell0.setCellStyle(cellStyle);
}
specRs.close();
st.close();
c.close();

Ну и так далее.

А вот с количеством записей у тебя действительно могут возникнуть проблемы. Прежде чем сериализовать Excel-документ на диск, POI нужно создать в памяти модель этого документа. 15000 записей - довольно много. И самое печальное - это никак не решается.

Автор: AntonSaburov 17.3.2006, 15:17
Можно попробовать сделать через ODBC - настроить ODBC для Excel и попробовать работать как с обычной базой.

У нас даже примерчик есть в FAQ - http://vingrad.ru/JAVA-JAV-000098

Автор: setnull 27.1.2009, 11:17
А можно уточнить, POI работает с Excel через COM  интерфейс, или работает с Excel-файлами?

Автор: alex_nevolin 27.1.2009, 11:45
Цитата(setnull @ 27.1.2009,  11:17)
А можно уточнить, POI работает с Excel через COM  интерфейс, или работает с Excel-файлами?

POI работает с Excel на Pure Java.
http://poi.apache.org/overview.html смотри HSSF and XSSF.

Автор: ig78 27.1.2009, 12:12
Цитата(alex_nevolin @  27.1.2009,  11:45 Найти цитируемый пост)
POI работает с Excel на Pure Java.


Это действительно так, но здесь одна особенность: - поддерживается формат Office 97. Для работы с новыми форматами офисных документов нужно использовать com-мосты, например http://jawinproject.sourceforge.net/. Они работают через com.

Делал подобное задание примерно два года назад.


Автор: alex_nevolin 27.1.2009, 15:38
Цитата(ig78 @ 27.1.2009,  12:12)
Цитата(alex_nevolin @  27.1.2009,  11:45 Найти цитируемый пост)
POI работает с Excel на Pure Java.

Это действительно так, но здесь одна особенность: - поддерживается формат Office 97. Для работы с новыми форматами офисных документов нужно использовать com-мосты, например http://jawinproject.sourceforge.net/. Они работают через com.
делал подобное задание примерно два года назад.

Неправда, Я использовал POI для генерации Excel файлов на прошлой неделе (Нужно было преписать отчеты с переходом клиентов на 2007 office) никаких com-мостов не использовал. Чистая Java. Правда для генерации формата xslx (OpenXML) что используется в 2007 офисе нужен POI 3.5 он вроде пока POI 3.5 beta 4.

Автор: ig78 27.1.2009, 16:15
Цитата(alex_nevolin @  27.1.2009,  15:38 Найти цитируемый пост)
на прошлой неделе 


спасибо, будут знать.
два года назад когда я делал такое задание перегонять данные в последние форматы ms office было очень проблематично, а POI на то время работал как я писал выше, т.е. приходилось использовать com-мосты.


Автор: COVD 27.1.2009, 16:47
MSSQL позволяет экспортировать в том числе и в excel файлы. Импорт - экспорт есть в MSOffice и в аналоге OpenOffice. Если это одноразовая задача, то, возможно, проще воспользоваться встроенными возможностями и не программировать.  

Автор: Platon 27.1.2009, 19:00
Цитата(tux @  17.3.2006,  16:10 Найти цитируемый пост)
Прежде чем сериализовать Excel-документ на диск, POI нужно создать в памяти модель этого документа. 15000 записей - довольно много. И самое печальное - это никак не решается. 

А мне интересно, насколько меньше памяти расходуется на открытие Excel документа? Мне кажется, что TC готов к тиким объемам памяти smile Другое дело - вопрос, зачем вам именно excel?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)