REST - Почему сгенерированный файл Excel на самом деле не создается при попытке в качестве веб-приложения? - PullRequest
0 голосов
/ 06 января 2011

Я создал простой REST web app, который бы создал Excel file и поместил в current directory. Но каким-то образом сгенерированный excel не находится в каталоге.На самом деле он даже не создается.

Вывод "done" отображается в GlassFish server log, поэтому процесс фактически завершается без ошибок.Единственное, что я подозреваю, - это путь к файлу, который я указываю для «myExcelFileThatWouldNotShowUp».

Я указал полный путь или относительный путь, который могу себе представить, но файл Excel все еще не отображается.Интересно, что , если я не запускаю это как веб-приложение (т.е. помещаю код в локальную функцию main () и запускаю его, это работает) Таким образом, я думаю, что-то связано со GlassFish, но не могу понятьout: (

  • GlassFish v3
  • REST / JAX-RS
  • Каркас Excella для создания электронной таблицы Excel из шаблона (myTemplate.xls)

Фрагмент кода

    @Path("horizontalProcess")
    @GET
    @Produces("application/xml")
    public String getProcessHorizontally() {

        try {
            URL templateFileUrl = this.getClass().getResource("myTemplate.xls");

            //  getPath() outputs... 
            //  /C:/Users/m-takayashiki/Documents/NetBeansProjects/KogaAlpha/build/web/WEB-INF/classes/local/test/jaxrs/myTemplate.xls
            System.out.println(templateFileUrl.getPath());

            String templateFilePath = URLDecoder.decode(templateFileUrl.getPath(), "UTF-8");

            //specify output path which is current dir and should create
            //myExcelFileThatWouldNotShowup.xls but it is not..
            String outputFileDir = "myExcelFileThatWouldNotShowUp";

            //<<template path>>,  <<output path>>,  <<file format>>
            ReportBook outputBook = new ReportBook(templateFilePath, outputFileDir, ExcelExporter.FORMAT_TYPE);

            ReportSheet outputSheet = new ReportSheet("myExcelSheet");
            outputBook.addReportSheet(outputSheet);

            //this is printed out so process actually gets here
            System.out.println("done!!");
        }
        catch(Exception e) {
            System.out.println(e);
        }


        return null;
    }//end method

1 Ответ

0 голосов
/ 07 января 2011

Вот почему не следует кодировать, когда усталость / сверхурочная работа сработали ....

Я забыл добавить 2 строки кода в конце, которые на самом деле генерируют превосходство ... обошлось мне в пару часов отладки.. (не спрашивайте, как я отлаживал: p

ReportProcessor reportProcessor = new ReportProcessor();
 reportProcessor.process(outputBook);

Кстати, сгенерированный файл хранится в директории ниже по умолчанию, если вы не укажете.

 //C:\Users\m-takayashiki\.netbeans\6.9\config\GF3\domain1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...