Я использую jasper-reports 4.5.0, spring 3.0.5RELEASE для создания отчетов. Теперь я сгенерирован в форматах html, csv, pdf. Но мой клиент хочет, чтобы отчет в (формат .doc). Как я могу сгенерировать отчет в этом формате .doc.Создание отчета в текстовом формате с использованием jasper
ответ
Просто, чтобы обеспечить пример кода на основе предположения Алекса:
Чтобы использовать JRRtfExporter:
protected byte[] exportReportToRtf(JasperPrint jasperPrint) throws JRException{
JRRtfExporter exporter = new JRRtfExporter();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, baos);
exporter.exportReport();
return baos.toByteArray();
}
Подобным нам JRDocxExporter:
protected byte[] exportReportToRtf(JasperPrint jasperPrint) throws JRException{
JRDocxExporter exporter = new JRDocxExporter();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, baos);
exporter.exportReport();
return baos.toByteArray();
}
Редактировать на основе комментариев:
Here - это список просмотра JaperReport что обеспечивает Sprig Fraework.
У них, похоже, нет специально для формата документа. Вероятно, вы, вероятно, напишите свой собственный, расширив AbstractJasperReportsSingleFormatView. Кажется, вам нужно будет только реализовать метод createExporter()
.
protected JRExporter createExporter(){
return new JRDocxExporter();
}
Привет, Спасибо за ваше решение. Но в моем случае я не могу так использовать. Потому что мой поток в точности похож на http://chathurangat.blogspot.in/2012/02/jasperreport-with-spring-mvc-fully. html this.I меня настраивает классы представления для соответствующего имени вида. Подобно этому есть предопределенный класс представления для формата rtf или doc. – user1434746
setParameter устарел, посмотрите http://stackoverflow.com/a/30486677/387454 – hering
на основе JRDocxExporter, вы можете продлить AbstractJasperReportsSingleFormatView:
public class CustomJasperWordReportsSingleFormatView extends AbstractJasperReportsSingleFormatView {
@Override
protected void renderReport(JasperPrint populatedReport, Map<String, Object> model, HttpServletResponse response) throws Exception {
super.renderReport(populatedReport, model, response);
}
@Override
protected JRExporter createExporter() {
return new JRDocxExporter();
}
@Override
protected boolean useWriter() {
// TODO Auto-generated method stub
return false;
}
}
и в вашем @Controller
вы заключаете ответ с HttpServletResponseWrapper, чтобы получить массив байтов, генерируемый отчет о яшмы:
public byte[] getByteArrayWordReport(String jasperViewName, ModelMap model, HttpServletResponse httpServletResponse,HttpServletRequest httpServletRequest) throws Exception{
View view=xmlViewResolver.resolveViewName(jasperViewName, null);
if(view==null){
log.error("Report not found:"+jasperViewName);
}
final ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();
HttpServletResponseWrapper httpServletResponseWrapper=new HttpServletResponseWrapper(httpServletResponse){
@Override
public PrintWriter getWriter() throws IOException {
return new PrintWriter(byteArrayOutputStream);
}
public ServletOutputStream getOutputStream() throws IOException {
return new ServletOutputStream() {
@Override
public void write(int b) throws IOException {
byteArrayOutputStream.write(b);
}
};
}
@Override
public void addCookie(Cookie cookie) {
}
@Override
public void addDateHeader(String name, long date) {
}
@Override
public void setHeader(String name, String value) {
}
@Override
public void addHeader(String name, String value) {
}
@Override
public void setIntHeader(String name, int value) {
}
@Override
public void addIntHeader(String name, int value) {
}
@Override
public void setContentLength(int len) {
}
@Override
public void setContentType(String type) {
}
};
view.render(model, httpServletRequest, httpServletResponseWrapper);
return byteArrayOutputStream.toByteArray();
}
После что у вас есть массив байтов, представляющий Word Document.
Для будущих читателей setParameter является устаревшим, и вы должны использовать экспортер, как это:
JasperReports 6.1.0
import java.io.File;
//import net.sf.jasperreports.engine.export.JRRtfExporter;
//import net.sf.jasperreports.engine.export.ooxml.JRDocxExporter;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.export.SimpleExporterInput;
import net.sf.jasperreports.export.SimpleWriterExporterOutput;
File sourceFile = new File("*.jasper");
JasperPrint jasperPrint = (JasperPrint)JRLoader.loadObject(sourceFile);
File destFile = new File(sourceFile.getParent(), jasperPrint.getName() + ".docx|.rtf");
//JRDocxExporter exporter = new JRDocxExporter();
//JRRtfExporter exporter = new JRRtfExporter();
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(destFile));
exporter.exportReport();
- 1. Печать данных отчета Jasper в матричном формате
- 2. Формат отчета отчета Jasper
- 3. Печать отчета Jasper с использованием принтера
- 4. Скачать Jasper отчета с использованием PHP
- 5. Просмотр pdf отчета Jasper с использованием JSP?
- 6. Генерация отчета Jasper с использованием VB.net?
- 7. Создание отчета Jasper PDF, завершает выполнение сервера
- 8. Служба отчета Jasper Report
- 9. Как сгенерировать файл doc с использованием отчета Jasper
- 10. Разрыв колонны отчета Jasper с группой
- 11. Запись отчета в формате PDF в браузере с использованием службы Jasper в Grails
- 12. Отчет Jasper в формате Excel
- 13. Создание таблицы данных с использованием отчетов Jasper
- 14. Показать имя файла отчета Jasper
- 15. Jasper оценка выражения отчета
- 16. Создание отчета Jasper PDF с возвратом JSF java.lang.NullPointerException error
- 17. XSL с использованием XML в текстовом формате
- 18. Создание отчета Excel с использованием Php
- 19. Ошибка в генерации отчета Jasper
- 20. Обнаружение формы отчета об экспорте Jasper
- 21. Запуск отчета jrxlm с сервером Jasper
- 22. отчета Jasper линейчатая диаграмма: вопросы
- 23. Лучший способ генерации отчета Jasper с использованием Java/JSP/Servlet
- 24. Создание отчета Jasper не выполнено при выполнении JasperViewer.viewReport (jasperPrint);
- 25. BIRT - создание отчета в формате PDF с Linux platfrom
- 26. Создание отчета пользователя с использованием VB.NET
- 27. Создание отчета с использованием динамического SQL
- 28. Создание отчета с использованием финансовых периодов
- 29. Создание отчета Crystal с использованием C#
- 30. Создание отчета из xml с использованием perl
Вы можете попробовать использовать [JRDocxExporter] (http://jasperreports.sourceforge.net/api/net/sf/jasperreports /engine/export/ooxml/JRDocxExporter.html) и [JRRtfExporter] (http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/export/JRRtfExporter.html) –
Спасибо, Алекс. org.springframework.web.servlet.view.jasperreports.JasperReportsPdfView, как и у нас есть класс для просмотра отчета в формате .doc – user1434746
@Alex, если вы хотите опубликовать ответ на основе вашего комментария, и я удалю его ответ. –