Показать файл CSV в IE - PullRequest
0 голосов
/ 12 марта 2012

Вот мой код:

public String download(){
    if(log.isDebugEnabled()){
       log.info("Entered for downloading: ");
    }
    FacesContext facesContext = FacesContext.getCurrentInstance(); 
    ExternalContext externalContext = facesContext.getExternalContext(); 
    HttpServletResponse response = (HttpServletResponse) externalContext.getResponse();
    try{
        List<TableController> list = fetchTechniciansList();
        Iterator<TableController> iter = list.iterator();
        ServletOutputStream out = null;
        response.reset();`
        response.setContentType("application/csv"); 
        response.setHeader("Cache-Control", "private"); 
        response.setHeader("Pragma", "public");
        response.addHeader("Accept-Ranges", "none");
        response.setHeader("Content-disposition","inline; filename=\""
            + "technician_list.csv" + "\"");
        out=response.getOutputStream();
        out.write("First Name".getBytes());
        out.write(',');
        out.write("Last Name".getBytes());
        out.write(',');
        out.write("User ID".getBytes());
        out.write('\n');
        Integer i=0; 
        while(iter.hasNext()) {             
            out.write(list.get(i).getFirst_name().getBytes());
            out.write(',');
            out.write(list.get(i).getBean_last_name().getBytes());
            out.write(',');
            out.write(list.get(i).getUser_id().toString().getBytes());
            out.write('\n');
            i++;            
            iter.next();
        }       
        out.flush();
        out.close();
        facesContext.responseComplete();

    }
    catch (Exception e) {
        // TODO: handle exception
        log.error("downloading error");
        log.info("Exited");
    }
    return null;
}

У меня есть ссылка на команду в HTML:

<h:commandLink value="Download Technician List" action="#{tableControllerBean.download}" style="float:right" target="_blank"></h:commandLink>

, который вызывает этот download() метод. Проблема в том, что список открывается непосредственно в Excel, но не в IE. Я использую IE 8 с Windows 7. Как я могу заставить это открываться в IE?

Ответы [ 2 ]

0 голосов
/ 12 марта 2012

То, что пользовательский агент делает с контентом, который он получает при отправке запроса на сервер, на 100% зависит от пользовательского агента.Короче говоря, кроме того, что вы советуете своим пользователям, как настроить их систему для обработки файлов * .csv как текста и отображения их на странице, вы мало что можете сделать.

Тем не менее, одна вещь дляcheck - тип носителя, который вы отправляете обратно в шапку.Многие браузеры будут обрабатывать ответы по-разному в зависимости от типа мультимедиа.

Наконец, если отображение содержимого в браузере является критически важным, вы можете рассмотреть возможность аннотирования содержимого CSV с помощью HTML + CSS, чтобы оно отображалось так, как вы хотите.Браузеры предназначены для обработки HTML и, как правило, имеют тенденцию передавать другой контент другим более подходящим приложениям, установленным в системе.Во многих случаях, в зависимости от того, что ваши пользователи хотят делать с CSV-контентом, реальная программа работы с электронными таблицами может быть намного более полезной для них, поскольку она имеет гораздо больше функциональных возможностей, чем браузер может легко предоставить.

0 голосов
/ 12 марта 2012

Нашел следующую страницу с инструкциями, как показывать CVS и XLS в IE. Инструкции для XP, но могут дать вам некоторую подсказку ...

http://www.winxptutor.com/iedocs.htm

Вы также можете попробовать другой ContentType, например, текст / обычный.

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