Java PrintWriter要写入CSV-新行不工作?

Java PrintWriter要写入CSV-新行不工作?,java,csv,printwriter,Java,Csv,Printwriter,我已经尝试了所有我能在网上和这个特定网站上找到的东西,但这些选项都不起作用。我正在循环浏览对象列表并创建一个CSV文件。我想在每一个物体进入时打破,但到目前为止运气不好 以下是我目前的情况: String value = FacesContext.getCurrentInstance(). getExternalContext().getRequestParameterMap().get("cityId"); String s

我已经尝试了所有我能在网上和这个特定网站上找到的东西,但这些选项都不起作用。我正在循环浏览对象列表并创建一个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();
    }
String value=FacesContext.getCurrentInstance()。
getExternalContext().getRequestParameterMap().get(“cityId”);
字符串分隔符=System.getProperty(“line.separator”);
试一试{
PortletResponse response1=(PortletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse();
HttpServletResponse resp=portal.getHttpServletResponse(response1);
分别设置标题(“内容类型”、“文本/csv”);
resp.setHeader(“内容处置”、“附件;文件名=myFile.csv”);
List people=ppApi.getPeopleByCityId(Long.parseLong(value));
PrintWriter out=resp.getWriter();
个人(pp:people){
out.print(pp.getFirstName()+“,”);
out.print(pp.getLastName()+“,”);
打印(pp.getEmail()+“,”);
out.print(pp.getPhone()+“%%n”);
输出。打印(“\r\n”);
输出。打印(“\n\r”);
打印输出(“\n”);
打印输出(“\r”);
打印输出(“\\r\\n”);
打印输出(“\\n”);
打印输出(“\\n\\r”);
打印输出(分隔符);
out.println('\n');
out.println(“%n”);
out.println(“%%n”);
}
//关闭输出流
out.flush();
out.close();
}
捕获(例外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


请不要发明自行车和使用图书馆。它将消除您所有的问题。

@user2124871您想要的一切。主要的优点是,它将自动转义所有CSV的特殊符号,并将创建有效的CSV文件。非常好-让我看看这个。好吧-它的工作,但是,有问题的输出流。但我认为这可能是正确的方向