xDocReport - невозможно создать отчет для входного потока - PullRequest
2 голосов
/ 30 марта 2012

Я не могу справиться с этой проблемой. Источник:

        try {
        // 1) Load Docx file by filling Velocity template engine and cache it to the registry
        InputStream in = new FileInputStream("/test.docx");
        IXDocReport report = XDocReportRegistry.getRegistry().loadReport(in,TemplateEngineKind.Velocity);

        // 2) Create context Java model
        IContext context = report.createContext();
        context.put("user", variables.get("user"));

        // 3) Generate report by merging Java model with the Docx
        OutputStream out = new FileOutputStream(new File("/test_Out.docx"));
        report.process(context, out);

      } catch (IOException e) {
        e.printStackTrace();
      } catch (XDocReportException e) {
        e.printStackTrace();
      }

Когда я пытаюсь выполнить этот код, у меня появляется ошибка:

09:03:15,608 ERROR [stderr] (http--127.0.0.1-8080-1) fr.opensagres.xdocreport.core.XDocReportException: Impossible to create report for the input stream. The report loader supports only [] files type.

09:03:15,608 ERROR [stderr] (http--127.0.0.1-8080-1)    at fr.opensagres.xdocreport.document.registry.XDocReportRegistry.createReport(XDocReportRegistry.java:328)

09:03:15,608 ERROR [stderr] (http--127.0.0.1-8080-1)    at fr.opensagres.xdocreport.document.registry.XDocReportRegistry.createReport(XDocReportRegistry.java:313)

09:03:15,608 ERROR [stderr] (http--127.0.0.1-8080-1)    at fr.opensagres.xdocreport.document.registry.XDocReportRegistry.loadReport(XDocReportRegistry.java:285)

09:03:15,608 ERROR [stderr] (http--127.0.0.1-8080-1)    at fr.opensagres.xdocreport.document.registry.XDocReportRegistry.loadReport(XDocReportRegistry.java:278)

09:03:15,608 ERROR [stderr] (http--127.0.0.1-8080-1)    at fr.opensagres.xdocreport.document.registry.XDocReportRegistry.loadReport(XDocReportRegistry.java:264)

И это указывает на строку:

IXDocReport report = XDocReportRegistry.getRegistry().loadReport(in,TemplateEngineKind.Velocity);

Что это значит - загрузчик отчетов поддерживает только [] тип файлов.? Это что-то не так с загрузкой данных из InputStream? Я понятия не имею, как это решить. Пожалуйста, помогите!

1 Ответ

4 голосов
/ 04 июня 2012

Ваша ошибка означает, что в вашем пути к классам нет XDocReport fr.opensagres.xdocreport.document.docx JAR реализации docx.Я предлагаю вам прочитать Docx Reporting , который объясняет это, и XDocReport загрузить образцы , которые содержат JAR-файлы скважин в соответствии с вашими желаниями (используйте Velocity / Freemarker, generatefrom ODT, Docx ...)

...