【问题标题】:CSV jsp generated file, how to insert a break lineCSV jsp生成文件,如何插入换行符
【发布时间】:2010-09-09 11:41:24
【问题描述】:

我正在尝试使用 jsp 文件及其代码生成 csv 文件:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%-- Set the content type --%>
<%@ page contentType="text/csv"%>

<c:forEach items="${chartData}" var="chartDataEntry" varStatus="status">
 ${chartDataEntry.date}, ${chartDataEntry.open}, ${chartDataEntry.high}, ${chartDataEntry.low}, ${chartDataEntry.close}, ${chartDataEntry.volume}
</c:forEach>

它很简单,而且效果很好。问题是我需要在每一行之后插入一个断线,但我无法让它工作。我已经尝试过惯用:\n \r\n 等等。

有什么想法吗?

【问题讨论】:

    标签: jsp csv


    【解决方案1】:

    在 JSP 中,有太多的环境因素可能会导致这种情况。 JSP 本身也会发出一些“无意的”空格和其他字符。此外,trimSpaces 设置可能会占用一些空格/换行符。通常认为(ab)将 JSP 用于纯 HTML 以外的其他内容是一种不好的做法。

    宁可使用 servlet 来获得稳健且一致的 CSV 输出:

    protected void doGet(HttpServletRequest request, HttpServletResponse response) {
        response.setContentType("text/csv");
        PrintWriter writer = response.getWriter();
        for (ChartDataEntry chartDataEntry : chartData) {
            writer.append(chartDataEntry.getDate()).append(',');
            writer.append(chartDataEntry.getOpen()).append(',');
            writer.append(chartDataEntry.getHigh()).append(',');
            writer.append(chartDataEntry.getLow()).append(',');
            writer.append(chartDataEntry.getClose()).append(',');
            writer.append(chartDataEntry.getVolume()).println();
        }
    }
    

    【讨论】:

    • 非常感谢,我认为这可行,但由于我的项目架构,它对我来说不是一个有效的解决方案。我会看看 trimSpaces 设置。
    • 我终于改变了一些东西,走上了这条路。非常感谢!
    【解决方案2】:

    您提供的代码应该会生成新行(可能有几行)。你确定这不是渲染的问题吗? (即您正在浏览器中查看它,并且由于没有
    标签,因此输出呈现在一行上?

    【讨论】:

    • 感谢您的回答!我只在浏览器中检查了结果。我会尝试将其写入文件中。但老实说,我认为这不是问题,因为正在读取 csv 文本的应用程序的行为就像一切都是一行。
    猜你喜欢
    • 1970-01-01
    • 2017-10-20
    • 2010-09-05
    • 2017-12-19
    • 1970-01-01
    • 1970-01-01
    • 2012-08-27
    • 2010-09-18
    相关资源
    最近更新 更多