gpt4 book ai didi

java - 没有用于将数据导出到 Excel 工作表的 HTML 代码的 JSP 页面

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:35:16 25 4
gpt4 key购买 nike

我在将数据导出到 Excel 工作表时遇到问题,这是因为我团队中的其他开发人员编写了一些代码。所以主要问题是使用 JSP 页面将数据导出到 Excel 或 .cvs,但不使用任何 HTML 代码。任何建议也将帮助我在我的发展领域进行探索。感谢您的努力。

最佳答案

最好为此使用 Servlet。原始 Java 代码不属于 JSP 文件,这只是 maintenance trouble 的配方.

首先,创建一个简单的 Java 实用程序类,例如 List<List<T>>List<Data> (其中 Data 代表一行)代表 CSV 内容和一个 OutputStream作为方法参数并编写执行数据复制任务的逻辑。

一旦你让它工作,创建一个 Servlet 类,它将一些 CSV 文件标识符作为请求参数或路径信息(我建议使用路径信息,因为雷德蒙德的一个团队开发的某个网络浏览器会在检测文件名/mimetype 时失败,否则) , 使用标识符获取 List<List<T>>List<Data>从某处并将其写入 OutputStreamHttpServletResponse以及一组正确的响应 header 。

这是一个基本的启动示例:

public static <T> void writeCsv (List<List<T>> csv, char separator, OutputStream output) throws IOException {
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(output, "UTF-8"));
for (List<T> row : csv) {
for (Iterator<T> iter = row.iterator(); iter.hasNext();) {
String field = String.valueOf(iter.next()).replace("\"", "\"\"");
if (field.indexOf(separator) > -1 || field.indexOf('"') > -1) {
field = '"' + field + '"';
}
writer.append(field);
if (iter.hasNext()) {
writer.append(separator);
}
}
writer.newLine();
}
writer.flush();
}

这是一个如何使用它的例子:

public static void main(String[] args) throws IOException {
List<List<String>> csv = new ArrayList<List<String>>();
csv.add(Arrays.asList("field1", "field2", "field3"));
csv.add(Arrays.asList("field1,", "field2", "fie\"ld3"));
csv.add(Arrays.asList("\"field1\"", ",field2,", ",\",\",\""));
writeCsv(csv, ';', System.out);
}

在 Servlet 中你基本上可以做:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String filename = request.getPathInfo();
List<List<Object>> csv = someDAO().list();
response.setHeader("content-type", "text/csv");
response.setHeader("content-disposition", "attachment;filename=\"" + filename + "\"");
writeCsv(csv, ',', response.getOutputStream());
}

将此 servlet 映射到类似于 /csv/* 的对象上并以类似 http://example.com/context/csv/filename.csv 的方式调用它.基本上就这些了。路径信息中的文件名很重要,因为雷德蒙德的一个团队开发的某个网络浏览器忽略了 filename Content-Disposition 的一部分 header 并改用 URL 的最后路径部分。

关于java - 没有用于将数据导出到 Excel 工作表的 HTML 代码的 JSP 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1755509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com