永发信息网

java将查询数据导出成csv文件的问题

答案:2  悬赏:80  手机版
解决时间 2021-11-29 00:57
java将查询数据导出成csv文件的问题
最佳答案
解释:csv文件实际上就是字符串,之间用“,”进行分割,之后进行的存储。
工具类如下:

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.List;


public class CSVUtils {


public static File createCSVFile(List head, List> dataList,
String outPutPath, String filename) {

File csvFile = null;
BufferedWriter csvWtriter = null;
try {
csvFile = new File(outPutPath + File.separator + filename + ".csv");
File parent = csvFile.getParentFile();
if (parent != null && !parent.exists()) {
parent.mkdirs();
}
csvFile.createNewFile();

// GB2312使正确读取分隔符","
csvWtriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(
csvFile), "GB2312"), 1024);
// 写入文件头部
writeRow(head, csvWtriter);

// 写入文件内容
for (List row : dataList) {
writeRow(row, csvWtriter);
}
csvWtriter.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
csvWtriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return csvFile;
}


private static void writeRow(List row, BufferedWriter csvWriter) throws IOException {
// 写入文件头部
for (Object data : row) {
StringBuffer sb = new StringBuffer();
String rowStr = sb.append("\"").append(data).append("\",").toString();
csvWriter.write(rowStr);
}
csvWriter.newLine();
}
}
全部回答
  • 1楼网友:荒野風
  • 2021-11-28 23:25
生成.csv文件有第三方包javacsv.jar,例子网上找,很简单
提示用户下载,用流实现,网络上更多
提供个JSP的例子给你。
<%@ page language="java" pageEncoding="UTF-8"%>
<%
// example:
// download image

String path = request.getParameter("p");
String name = request.getParameter("name");
String root = getServletContext().getRealPath(path);
if (name == null) {
int index = path.lastIndexOf("/");
if (index >= 0) {
name = path.substring(index + 1);
} else {
name = path;
}
}

response.setContentType("unknown");
response.addHeader("content-disposition", "filename=\"" + name + "\"");

java.io.OutputStream os = response.getOutputStream();
try {
java.io.FileInputStream fis = new java.io.FileInputStream(root);

byte[] b = new byte[1024];
int i = 0;

while ( (i = fis.read(b)) > 0 ) {
os.write(b, 0, i);
}

fis.close();
os.flush();
os.close();
}
catch ( Exception e )
{
e.printStackTrace();
}
out.clear();
out = pageContext.pushBody();
%>
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯