JSP页面将查询结果导出为CSV文件
发布网友
发布时间:2022-04-28 18:10
我来回答
共2个回答
热心网友
时间:2022-04-26 14:13
你好运气啊~~我前几天刚做过这个~~~
下面这大段代码是2个方法 除了在第一个方法里将文件名和要写入的表头改成你自己的之外其余照搬就可以了 最后只需用在你的主方法里调用这两个方法就行了
不易理解的地方我做了注释 祝你成功~~~
public File putOutTaskToExcelFile(List<E> getPutOutTaskResult) {
//在我的代码里,getPutOutTaskResult是我需要导出的信息列表,你换成你的就行
BufferedWriter out = null;
int random = (int) (Math.random() * 1000 + 1);
//这个随机数只是为了让后面生成的文件名不重复而已
File excelFile = null;
try {
excelFile = File.createTempFile("你的文件名" + random,".csv");
//生成一个csv临时文件
excelFile.deleteOnExit();
} catch (IOException e1) {
e1.printStackTrace();
}
int i = 1;
try {
out = new BufferedWriter(new FileWriter(excelFile));
out
.write("序号" + "," + "用户号码" + "," + "是否成功" + "," + "失败原因"
+ ",");//换成你需要的表头
out.newLine();
Iterator<E> resultIterator = getPutOutTaskResult.iterator();
while (resultIterator.hasNext()) {
E e = resultIterator.next();
out.write(i + "," + A + ","
+ B + "," + C);
//A、B、C等等都换上你自己的就可以 i是一个自增序号
out.newLine();
i++;
}
out.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return excelFile;
}
/**
* 将服务器端生成的Excel文件提供给客户端下载
*
* @param request
* @param response
* @param tempFile
*/
private void download(HttpServletRequest request,
HttpServletResponse response, File tempFile) {
String filenamedownload = tempFile.toString();
String filenamedisplay = tempFile.getName();
try {
filenamedisplay = URLEncoder.encode(filenamedisplay, "UTF-8");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
response.addHeader("Content-Disposition", "attachment;filename="
+ filenamedisplay);
OutputStream output = null;
FileInputStream fis = null;
try {
output = response.getOutputStream();
fis = new FileInputStream(filenamedownload);
byte[] b = new byte[1024];
int i = 0;
while ((i = fis.read(b)) > 0) {
output.write(b, 0, i);
}
output.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
fis = null;
}
if (output != null) {
try {
output.close();
} catch (IOException e) {
e.printStackTrace();
}
output = null;
}
}
}
参考资料:拒绝投票 敬请理解
热心网友
时间:2022-04-26 15:31
。。很简单,就是用IO,输出个文件,扩展名写成csv就可以了,注意一下csv文件的格式,你自己创建一个两行两列的csv文件,然后用记事本打开看看就明白了。。。。。