gpt4 book ai didi

java - 如何使用 Java 以 CSV 格式导出数据?

转载 作者:行者123 更新时间:2023-11-29 09:44:38 25 4
gpt4 key购买 nike

原因可能是对 java 知识的缺乏 :( , 所以我问这个问题,

在这段代码中,我获得了动态值(来自 jsp 页面):

<form action="">
<%
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/apps","root","root");
Statement stmt = con.createStatement();
String sql = "select * from info;";
ResultSet rs = stmt.executeQuery(sql);
System.out.println(sql);
System.out.println("hi Tirtha");
%>
<center>
<h3>Information of User's</h3>
<table cellpadding="4" cellspacing="2" border="1" bgcolor="">
<tr>
<th>User Name</th>
<th>Email Id</th>
</tr>
<tr>
<%while(rs.next()){%>
<td><input type="text" name="name" value="<%= rs.getString(1)%>" readonly="readonly">
<td><input type="text" name="email" value="<%= rs.getString(2)%>" readonly="readonly">
</tr>
<%}%>
</table>
</center>
</form>

现在我想将这些数据保存在一个 csv 文件中(其中有一个导出选项)。

任何输入将不胜感激。

最佳答案

这是一个可以用来导出为 CSV 的类:

import java.io.FileWriter;
import java.io.IOException;
import User;

public class GenerateCsv
{


private static void generateCsvFile(ArrayList<User> users)
{
String output = "Email, Name\n";

for (User user in users) {
output += user.getEmail() + ", " + user.getName() + "\n";
}

return output;
}
}

以 MVC 方式工作

你的代码应该这样写:

假设您有一个名为. User.java 里面有一个叫做获取所有用户的静态函数

public class User {

String name;
String email;

public static ArrayList<User> getAllUsers() {
// returns all users
...
}

}

然后假设您有一个名为 UsersServlet 的 servlet,它获得了这些用户:

import javax.servlet.*;
import javax.servlet.http.*;

public class UsersServlet extends HttpServlet {

public void doGet (HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {

res.setContentType("application/csv");
PrintWriter w = res.getWriter();

ArrayList<User> users = Users.getAllUsers();

w.prinln(GenerateCsv.generateCsvFile(users));

w.flush();
w.close();
}

public void doPost (HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
...
}
}

例如,在您的 jsp 中,您将有一个调用 servlet 的简单 anchor 标记(servlet 调用 User.java,获取数据,将它们形成 CSV,然后将其输出到浏览器...)。这样的事情会起作用:

<a href='/getCSV' > Export CSV </a>

但请注意,您必须使用 web.xml 将 servlet 链接到 url:

<web-app>
<servlet>
<servlet-name>UsersServlet</servlet-name>
<servlet-class>__package__.UsersServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>UsersServlet</servlet-name>
<url-pattern>getCSV</url-pattern>
</servlet-mapping>
</web-app>

编辑:写入磁盘而不是发送到浏览器

 import java.io.FileWriter;
import java.io.IOException;
import User;

public class GenerateCsv
{


private static void generateCsvFile(String fileName, ArrayList<User> users)
{
try
{
FileWriter writer = new FileWriter(fileName);

writer.append("Email");
writer.append(',');
writer.append("Name");
writer.append('\n');

for (User user in users) {
writer.append(user.getEmail());
writer.append(',');
writer.append(user.getName());
writer.append('\n');
}

writer.flush();
writer.close();
} catch(IOException e) {
e.printStackTrace();
}
}
}

关于java - 如何使用 Java 以 CSV 格式导出数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13159272/

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