JSF 1.1 сохранить как поле проблемы - PullRequest
0 голосов
/ 18 сентября 2011

Я использую JSF 1.1 на Tomcat 6.0.26 и Java 1.4 версии. Я должен использовать их в своем проекте. Моя страница JSF имеет данные, и я хочу, чтобы они экспортировались, но с полем Сохранить как. После того, как я нажимаю ссылку на команду экспорта в Excel, она показывает браузер так:

¡Ï ¡; þÿ þÿ Ent Root Entryÿÿÿÿÿÿÿÿ @ Workbookÿÿÿÿÿÿÿÿÿÿÿÿ0 ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ pm ÓÌAá ° Áâ \ pmusty B ° a = œ¯¼ = h \: ¾ # 8X @ "· Ú1ÈÿArial1ÈÿArial1ÈÿArial1ÈÿArial" $ "#, ## 0 _); (" $ "#, ## 0)!" $ "#, ## 0 _) [Красный] ( "$" #, ## 0) "" $ "#, ## 0,00 _); (" $ "#, ## 0.00)" "$" #, ## 0,00 _); [Красный] ("$" #, ## 0,00) 7 * 2 _ ("$" * #, ## 0 _); _ ("$" * (#, ## 0); _ ("$" * "-" ); (@ ).)) (* #, ## 0 _); _ (* (#, ## 0); _ (* "-" ); (@ )?,: ("$" * #, ## 0,00 _); _ ("$" * (#, ## 0,00); _ (" $ "*" - "?? ); (@ ) 6 + 1 (* #, ## 0,00 _); _ (* (#, ## 0,00); _ (* "-" ?? ); (@_) ÿõÿ À ÿ ÿ À À ÿ ÿ ÿ À À À À ÿ À À ÿ ÿ ÿ ÿ À À ÿ ô ô ô ô ô ô ô ô ô ô ô ô ô ô ô ô ô ô ô ô ô ô ô ô + + + Ÿ À), * * * * € € € € € € € € € € € € € €……………………………… 50 50 50 50 50 50 02 02 02 02 02 DA DÁ dü © bÒMbP? _ * + ‚€% ¡Áƒ„ ¡d, à? À? Uý ý ý ý ý ý ý ý ý ý ý ý ý ý ý ý ý ý ý ý ý ý ý ý ý ý ý ý ý ý ý ý ý ÿÿÿÿÿ> ¶ @ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ! "# $ þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ

Как мне это решить?

thnx balusC. Но проблема не решена. вот мой код ..

`public String export (Список списка) {

    Iterator i1 = list.iterator();
    HSSFWorkbook wb = new HSSFWorkbook();
    HSSFSheet s = wb.createSheet();
    HSSFRow r = null;
    HSSFCell c = null;
    int i = 0;

    try {

        FacesContext facesContext = FacesContext.getCurrentInstance();
        ExternalContext externalContext = facesContext.getExternalContext();
        HttpServletResponse resp = (HttpServletResponse) externalContext
                .getResponse();
        ServletOutputStream out = resp.getOutputStream();
        resp.setContentType("application/vnd.ms-excel");


        HSSFRow r2 = s.createRow(0);

        for (short cellnum = (short) 0; cellnum < 6; cellnum++) {

            c = r2.createCell(cellnum);

            if (cellnum == 0)
                c.setCellValue("AD");
            else if (cellnum == 1)
                c.setCellValue("SOYAD");
            else if (cellnum == 2)
                c.setCellValue("DEPARTMAN");
            else if (cellnum == 3)
                c.setCellValue("EV");
            else if (cellnum == 4)
                c.setCellValue("CEP");

            else if (cellnum == 5)
                c.setCellValue("DAHILI");
        }


        while (i1.hasNext()) {
            md1 = new Model();
            md1 = (Model) i1.next();

            int rownum = i + 1;

            r2 = s.createRow(rownum);

            for (short cellnum = (short) 0; cellnum < 6; cellnum++) {

                c = r2.createCell(cellnum);

                if (cellnum == 0)
                    c.setCellValue(md1.getAd());
                else if (cellnum == 1)
                    c.setCellValue(md1.getSoyad());
                else if (cellnum == 2)
                    c.setCellValue(md1.getDepartman());
                else if (cellnum == 3)
                    c.setCellValue(md1.getEv());
                else if (cellnum == 4)
                    c.setCellValue(md1.getCep());

                else if (cellnum == 5)
                    c.setCellValue(md1.getDahili());

            }

            i++;
        }
        resp.setHeader("content-disposition:",
                "attachment; filename= \"TelefonRehberi.xls\"");

        wb.write(out);
        out.flush();
        out.close();

        facesContext.responseComplete();
    } catch (Exception e) {
        System.out.println("Error: " + e);
    }

    return "";
}`

1 Ответ

1 голос
/ 18 сентября 2011

Вам необходимо установить заголовок типа контента, чтобы браузер понимал, что это за файл.

response.setHeader("Content-Type", "application/vnd.ms-excel");

Вам необходимо установить заголовок расположения содержимого, чтобы браузер отображал диалоговое окно Сохранить как :

response.setHeader("Content-Disposition", "attachment;filename=\"" + yourFileName + "\"");

Необходимо убедиться, что вы записываете файл как двоичные данные, а не как символьные данные.

InputStream input = getExcelFileContentSomehow();
OutputStream output = response.getOutputStream();
// Write input to output.

Обновление : согласно вашему фрагменту кода заголовок Content-Disposition неверен. В конце заголовка есть двоеточие. Убери это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...