导出Csv文件思路:1.首先把数据遍历,在服务器端生成Csv文件
2.将服务器端生成的Csv文件提供给客户端下载
注意:如果导出数据中有科学计数法表示:请在导出数据后加上“\t”。
package com.neusoft.util.excel;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.URLEncoder;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import com.neusoft.common.exception.BaseException;
import com.neusoft.dataCenter.residentManage.model.ResidentBean;
public class ExportCsv
{
private static final Logger logger = Logger.getLogger(ExportCsv.class);
/**
*
* 作用:获得Csv文件
*
* @param residentList
* 需要遍历的结合
* @param dirpath
* 临时文件路径
* @param Prefix
* 临时文件前缀
* @return
* @throws BaseException
*/
public File getCsvFile(List<ResidentBean> residentList, String dirpath, String Prefix) throws BaseException
{
BufferedWriter out = null;
FileOutputStream writerStream = null;
int random = (int) (Math.random() * 1000 + 1);
File excelFile = null;
File dir = new File(dirpath);
if (!dir.exists())
{
dir.mkdirs();
}
try
{
File[] filelist = dir.listFiles();
Date date = new Date();
for (int i = 0; i < filelist.length; i++)
{
long modifytime = filelist[i].lastModified();
long nowdate = date.getTime();
if ((nowdate - modifytime) / 1000 >= 3600)
{
filelist[i].delete();
}
}
} catch (Exception e)
{
logger.info("删除导出居民信息产生的临时文件异常", e);
}
try
{
excelFile = File.createTempFile(Prefix + random, ".csv", dir);
int i = 1;
writerStream = new FileOutputStream(excelFile);
out = new BufferedWriter(new OutputStreamWriter(writerStream, "gb2312"));
out.write("序号,姓名,手机号码,街道名称,社区名称,小区名称,年龄,性别,民族,出生日期,身份证号码,政治面貌,文化程度,地址");// 换成你需要的表头
out.newLine();
Iterator<ResidentBean> resultIterator = residentList.iterator();
while (resultIterator.hasNext())
{
ResidentBean e = resultIterator.next();
StringBuffer tempBuffer = new StringBuffer();
tempBuffer.append(i);
tempBuffer.append(",");
tempBuffer.append(e.getName() == null ? "" : e.getName().trim());
tempBuffer.append(",");
tempBuffer.append(e.getMobile() == null ? "" : e.getMobile().trim() + "\t");
tempBuffer.append(",");
tempBuffer.append(e.getStreetName() == null ? "" : e.getStreetName().trim());
tempBuffer.append(",");
tempBuffer.append(e.getCommunityName() == null ? "" : e.getCommunityName().trim().replace("\r\n", ""));
tempBuffer.append(",");
tempBuffer.append(e.getVillageName() == null ? "" : e.getVillageName().trim());
tempBuffer.append(",");
tempBuffer.append(e.getAge() == null ? "" : e.getAge().trim());
tempBuffer.append(",");
tempBuffer.append(e.getSex() == null ? "" : e.getSex().trim());
tempBuffer.append(",");
tempBuffer.append(e.getNation() == null ? "" : e.getNation().trim());
tempBuffer.append(",");
tempBuffer.append(e.getBirthday() == null ? "" : e.getBirthday().trim() + "\t");
tempBuffer.append(",");
tempBuffer.append(e.getCardNo() == null ? "" : e.getCardNo().trim() + "\t");
tempBuffer.append(",");
tempBuffer.append(e.getNationality() == null ? "" : e.getNationality().trim());
tempBuffer.append(",");
tempBuffer.append(e.getEdu() == null ? "" : e.getEdu().trim());
tempBuffer.append(",");
tempBuffer.append(e.getAddress() == null ? "" : e.getAddress().trim());
out.write(tempBuffer.toString());
out.newLine();
tempBuffer = null;
i++;
}
out.flush();
} catch (IOException e)
{
logger.error("生成居民信息CSV临时文件异常", e);
} finally
{
if (out != null)
{
try
{
out.close();
} catch (IOException e)
{
e.printStackTrace();
}
}
if (writerStream != null)
{
try
{
writerStream.close();
} catch (IOException e)
{
e.printStackTrace();
}
}
}
return excelFile;
}
/**
* 将服务器端生成的Excel文件提供给客户端下载
*
* @param response
* @param tempFile
*/
public void download(HttpServletResponse response, File tempFile)
{
String filenamedownload = tempFile.toString();
String filenamedisplay = "居民信息.csv";
OutputStream output = null;
FileInputStream fis = null;
try
{
filenamedisplay = URLEncoder.encode(filenamedisplay, "UTF-8");
response.addHeader("Content-Disposition", "attachment;filename=" + filenamedisplay);
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)
{
// logger.error("导出居民信息CSV文件异常", e);
} 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;
}
}
}
}
调用:
//residentList 需要导出的集合,一般是从数据库获得的数据
//exportDirPath 导出到服务器的Csv临时文件路径,一般是spring注入进来
//jumin 导出Csv临时文件前缀
ExportCsv xx = new ExportCsv();
File tempfile = xx.getCsvFile(residentList, exportDirPath, "jumin");
xx.download(response, tempfile);
相关推荐
标题"thinkphp下导入导出csv文件"涉及到的主要知识点包括: 1. CSV文件格式:CSV文件是以逗号分隔的纯文本文件,每个记录占据一行,每个字段之间由逗号分隔。这种格式使得数据可以轻松地在各种应用程序之间传递,如...
1-Gbase导出csv文件教程
java导出数据时,如果对数据格式没有特殊要求,为了提高效率可以导出CSV格式的文件,导出CSV文件不支持多个sheet页。
通过以上步骤,你已经实现了在Java中导出CSV文件,然后将其压缩成ZIP格式,并提供了一个Web接口供用户下载。确保正确配置你的服务器和文件路径,以适应实际项目的需求。同时,不要忘记处理可能出现的异常,以确保...
导出CSV文件的基本过程包括以下步骤: 1. **数据准备**:首先,你需要获取要导出的数据。这通常来自数据库查询,但也可能是内存中的数据结构,如List或DataTable。确保数据正确无误且符合预期格式。 2. **响应设置...
ASP.NET 导出 CSV 文件 本文档将详细介绍如何使用 ASP.NET 导出 CSV 文件,包括相关的代码实现和知识点解析。 标题解释 ASP.NET 导出 CSV 文件是指使用 ASP.NET 框架将数据导出到 CSV 文件格式中。CSV(Comma ...
`csv.js`库为JavaScript开发者提供了强大且灵活的CSV处理能力,无论是解析还是导出CSV文件,都能轻松应对。通过熟练掌握`csv.js`,你可以更高效地在Web应用中处理CSV数据,提升开发效率。在实际项目中,根据具体需求...
1.浏览器点击导出按钮,直接下载到本地,服务器不生成临时文件; 2.生成csv,中文无乱码,数据不会科学计数法; 3.支持大数据下载; 4.后台服务java语言实现,前端不限制; 5.前端代码: [removed]void(0)" class=...
使用io流写如文件导出csv文件,使用jsp实现。简单的方法可以推广!
fastadmin 导出csv文件
然而,由于编码问题,有时在导出CSV文件时会出现乱码。本示例将详细讲解如何使用PHP正确地导出CSV文件,避免出现乱码情况,并介绍相关的关键知识点。 首先,我们需要了解字符编码的基本概念。在处理文本数据时,...
sqlserver数据库用,指定查询语句执行后导出指定路径下生成csv文件
### Oracle、Teradata、Hive、GBase、DB2 导出 CSV 文件命令总结 #### 一、Oracle 数据库导出 CSV 文件 ##### 1. 通过 Spool 指令实现 Oracle 提供了 `spool` 命令来帮助我们将查询结果输出到一个文本文件中,...
然后,我们可以开始编写Ruby代码来导出CSV文件。以下是一个基本示例,展示了如何创建并写入CSV文件: ```ruby require 'fastercsv' # 定义要导出的数据 data = [ ['Name', 'Age', 'City'], ['John', 30, 'New ...
综上所述,通过使用univocity-parsers库,我们可以在Java后端将数据导出为CSV文件,然后利用JSch库将生成的CSV文件安全地上传到SFTP服务器。这个过程涉及到了文件操作、网络传输和安全性等多个方面的知识,对于开发...
大量数据库导出csv,一般的通过PLSQL导出csv文件,但对于数据量较大时,则需要通过数据库内部去调用存储过程去导出,这样效率会高出很多
在这个实例中,"一个用servlet实现导出csv文件的实例 - Java编程.htm"可能是博主分享的详细代码示例,而"一个用servlet实现导出csv文件的实例 - Java编程_files"可能包含与文章相关的其他辅助文件。在实际操作中,你...
1. **导出CSV文件** CSV(Comma Separated Values)是一种通用的文件格式,大多数电子表格软件如Excel都可以打开。在Asp.net中,我们可以直接将数据写入到Response流中,以逗号分隔的方式生成CSV文件。优点是简单...
总之,解决Oracle导出CSV文件显示乱码的关键在于理解字符编码和数据解析的过程。通过正确设置文件的编码和应用正确的分隔符,可以确保数据在不同程序间顺利转换并保持可读性。如果上述方法无效,可能需要检查数据库...
标题中的“poi导出csv文件”指的是使用Apache POI库来生成CSV(逗号分隔值)文件。Apache POI是Java中一个流行的库,它主要用于处理Microsoft Office格式的文件,如Excel。在这个场景中,我们将探讨如何使用POI来...