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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java将查询数据导出成csv文件的问题相关的知识,希望对你有一定的参考价值。

用java将查询出来的数据在后台生成.csv文件,转到前台的时候提示用户下载,具体应该怎么实现呢?小弟初学java,希望大虾们能不吝指教~只有这么点分了..

解释: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;

/**
*
* CSV文件导出工具类

*/
public class CSVUtils

/**
* CSV文件生成方法
* @param head
* @param dataList
* @param outPutPath
* @param filename
* @return
*/
public static File createCSVFile(List<Object> head, List<List<Object>> 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<Object> row : dataList)
writeRow(row, csvWtriter);

csvWtriter.flush();
catch (Exception e)
e.printStackTrace();
finally
try
csvWtriter.close();
catch (IOException e)
e.printStackTrace();


return csvFile;


/**
* 写一行数据方法
* @param row
* @param csvWriter
* @throws IOException
*/
private static void writeRow(List<Object> 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();

参考技术A 生成.csv文件有第三方包javacsv.jar,例子网上找,很简单
提示用户下载,用流实现,网络上更多
提供个JSP的例子给你。
<%@ page language="java" pageEncoding="UTF-8"%>
<%
// example:
// <a href="download.jsp?p=img/test.gif">download image</a>

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();
%>本回答被提问者采纳

以上是关于java将查询数据导出成csv文件的问题的主要内容,如果未能解决你的问题,请参考以下文章

es导出excel

java如何导出csv文件 用户点击导出可以导出到他想保存的地方

java里将从excel读到的数据用csv导出,代码怎么写

将特定查询数据从 netezza 数据库导出到 CSV 文件

将sql查询结果导出到csv或excel

java实现接口导出csv文件