2013-04-10 68 views
0

我已經嘗試了所有我可以在網上找到的東西,並且在這個特定的網站上,這些選項都不起作用。我正在瀏覽一系列對象並創建一個CSV文件。我想打破每個對象入口,但目前還沒有運氣。PrintWriter寫入CSV - 新行不起作用?

這是我目前有:

String value = FacesContext.getCurrentInstance(). 
      getExternalContext().getRequestParameterMap().get("cityId"); 

    String seperator = System.getProperty("line.separator"); 

    try { 

     PortletResponse response1 = (PortletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse(); 
     HttpServletResponse resp = PortalUtil.getHttpServletResponse(response1); 
     resp.setHeader("Content-Type", "text/csv"); 
     resp.setHeader("Content-disposition", "attachment;filename=myFile.csv"); 

     List<Person> people = ppApi.getPeopleByCityId(Long.parseLong(value)); 

     PrintWriter out = resp.getWriter(); 

     for(Person pp : people) { 

      out.print(pp.getFirstName() + ","); 
      out.print(pp.getLastName() + ","); 
      out.print(pp.getEmail() + ","); 
      out.print(pp.getPhone() + "%%n"); 
      out.print("\r\n"); 
      out.print("\n\r"); 
      out.print("\n"); 
      out.print("\r"); 
      out.print("\\r\\n"); 
      out.print("\\n"); 
      out.print("\\n\\r"); 
      out.print(seperator); 
      out.println('\n'); 
      out.println("%n"); 
      out.println("%%n"); 
     } 

     //Close the output stream 
     out.flush(); 
     out.close(); 
    } 
    catch(Exception e) { 
     e.printStackTrace(); 
    } 

所以沒有這些東西都在工作。我的輸出看起來是這樣的:

傑夫·史密斯,JSMITH @ email.com,555-123-1234 裏克·史密斯,rsmith @ email.com,123-123-1233

應該是這樣的:

傑夫·史密斯,JSMITH @ email.com,555-123-1234

裏克·史密斯,rsmith @ email.com,123-123-1233

回答

1

請不要發明自行車,並使用Java CSV圖書館。它會消除你所有的問題。

+0

這是否與輸出到HTML響應一起工作? – user2124871 2013-04-10 15:10:11

+0

@ user2124871你想要的一切。主要優點是它會自動轉義所有CSV的特殊符號並創建有效的csv文件。 – Andremoniy 2013-04-10 15:11:21

+0

優秀 - 讓我看看這個。 – user2124871 2013-04-10 15:12:54