java 解析csv_java解析CSV文件(getCsvData 解析CSV文件 zipFiles 打成压缩包 exportObeEventDataExcel 前端页面响应)...
//CSVUtil.class为类名
private static final Logger log = Logger.getLogger(CSVUtil.class);
//filepath 可以为本地路径,也可以为服务器路径
private static final String filepath = "C://Users//A//Downloads//";
public static voidmain(String[] args) {
List exportData= new ArrayList();
Map row1= new LinkedHashMap();
row1.put("11", "11");
row1.put("21", "12");
row1.put("31", "13");
row1.put("41", "14");
exportData.add(row1);
row1= new LinkedHashMap();
row1.put("11", "21");
row1.put("2", "22");
row1.put("31", "23");
row1.put("4", "24");
exportData.add(row1);
List propertyNames= newArrayList();
LinkedHashMap map= newLinkedHashMap();
map.put("11", "第一列");
map.put("22", "第二列");
map.put("33", "第三列");//System.out.println(map.keySet().toString().replace("[", "").replace("]", ""));
map.put("54", "第四列");
CSVUtil.createCSVFile(exportData, map,"C:\\Users\\A\\Downloads\\", "导出CSV文件");
}public staticFile createCSVFile(List exportData, LinkedHashMap rowMapper,
String outPutPath, String filename) {
File csvFile= null;
BufferedWriter csvFileOutputStream= null;try{
csvFile= new File(outPutPath + filename + ".csv");//csvFile.getParentFile().mkdir();
File parent =csvFile.getParentFile();if (parent != null && !parent.exists()) {
parent.mkdirs();
}
csvFile.createNewFile();//GB2312使正确读取分隔符","
csvFileOutputStream = new BufferedWriter(newOutputStreamWriter(new FileOutputStream(csvFile), "GB2312"), 1024);//写入文件头部
for (Iterator propertyIterator =rowMapper.entrySet().iterator(); propertyIterator.hasNext();) {
java.util.Map.Entry propertyEntry=(java.util.Map.Entry) propertyIterator
.next();
csvFileOutputStream.write("\""
+ propertyEntry.getValue().toString() + "\"");if(propertyIterator.hasNext()) {
csvFileOutputStream.write(",");
}
}
csvFileOutputStream.newLine();//写入文件内容
for (Iterator iterator =exportData.iterator(); iterator.hasNext();) {//Object row = (Object) iterator.next();
LinkedHashMap row =(LinkedHashMap) iterator.next();
System.out.println(row);for (Iterator propertyIterator =row.entrySet().iterator(); propertyIterator.hasNext();) {
java.util.Map.Entry propertyEntry=(java.util.Map.Entry) propertyIterator.next();//System.out.println( BeanUtils.getProperty(row, propertyEntry.getKey().toString()));
csvFileOutputStream.write("\""
+ propertyEntry.getValue().toString() + "\"");if(propertyIterator.hasNext()) {
csvFileOutputStream.write(",");
}
}if(iterator.hasNext()) {
csvFileOutputStream.newLine();
}
}
csvFileOutputStream.flush();
}catch(Exception e) {
e.printStackTrace();
}finally{try{
csvFileOutputStream.close();
}catch(IOException e) {
e.printStackTrace();
}
}returncsvFile;
}
//导出到前端页面
public static String exportObeEventDataExcel(HttpServletResponse response,File csvFile){
try {
// 以流的形式下载文件。
InputStream fis = new BufferedInputStream(new FileInputStream(csvFile));
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
fis.close();
// 清空response
response.reset();
// 设置response的Header
response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(
csvFile.getName(), "UTF-8"));
response.addHeader("Content-Length", "" + csvFile.length());
OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/octet-stream");
toClient.write(buffer);
toClient.flush();
toClient.close();
return "成功";
} catch (IOException e) {
String message = "export ObeEvent Data Excel failed . ";
log.error(message, e);
return "失败";
}
}
//删除文件
if (csvFile.exists() && csvFile.isFile()){
csvFile.delete();
}
//上传文件,只返回文件名
public static String createCSVFileUrl(List>exportData,
String filename) {
log.info("开始生成csv文件");
File csvFile= null;
String PATH= "";
BufferedWriter csvFileOutputStream= null;try{
PATH= filepath + filename + ".csv";
csvFile= newFile(PATH);
File parent=csvFile.getParentFile();if (parent != null && !parent.exists()) {
parent.mkdirs();
}
csvFile.createNewFile();
log.info(PATH);//GB2312使正确读取分隔符","
csvFileOutputStream = new BufferedWriter(newOutputStreamWriter(new FileOutputStream(csvFile), "UTF-8"), 1024);//写入文件头部
Map map1 = exportData.get(0);if (map1!=null && map1.size()>0) {int num =map1.keySet().size();int j = 0;for(String key : map1.keySet()) {//第六步,创建单元格,并设置值
csvFileOutputStream.write("\""
+ key.toString() + "\"");++j;if (j!=num) {
csvFileOutputStream.write(",");
}
}
}
csvFileOutputStream.newLine();//int i = 0 ;//写入文件内容
for (Iterator iterator =exportData.iterator(); iterator.hasNext();) {//Object row = (Object) iterator.next();
LinkedHashMap row =(LinkedHashMap) iterator.next();//i++;//System.out.println(row);//if (i%10000 == 0) {//System.out.println("正在写第"+i+"条数据!");//}
for (Iterator propertyIterator =row.entrySet().iterator(); propertyIterator.hasNext();) {
java.util.Map.Entry propertyEntry=(java.util.Map.Entry) propertyIterator.next();//System.out.println( BeanUtils.getProperty(row, propertyEntry.getKey().toString()));
csvFileOutputStream.write("\""
+ propertyEntry.getValue().toString() + "\"");if(propertyIterator.hasNext()) {
csvFileOutputStream.write(",");
}
}if(iterator.hasNext()) {
csvFileOutputStream.newLine();
}
}
csvFileOutputStream.flush();
}catch(Exception e) {
e.printStackTrace();
}finally{try{
csvFileOutputStream.close();
}catch(IOException e) {
e.printStackTrace();
}
}
log.info("生成csv文件结束");//exportObeEventDataExcel(response,csvFile);//List list = new ArrayList();//list.add(filepath + filename + ".csv");//try {//zipFiles(list,filepath+"csv.zip",response);//} catch (IOException e) {// //TODO Auto-generated catch block//e.printStackTrace();//}//if (csvFile.exists() && csvFile.isFile())//{//csvFile.delete();//}
returnPATH;
}
/***@paramfileRealPathList 待压缩的文件列表
*@paramzipFileRealPath 压缩后的文件名称
*@returnboolean
*@throws:Exception
* @Function: zipFiles
* @Description:多个文件的ZIP压缩*/
public static void zipFiles(ListfileRealPathList, String zipFileRealPath,
HttpServletResponse response)throwsIOException
{
FileOutputStream out= null;
ZipOutputStream zipOut= null;
String path= filepath+zipFileRealPath+".zip";try{//根据文件路径构造一个文件实例
File zipFile = newFile(path);//判断目前文件是否存在,如果不存在,则新建一个
if (!zipFile.exists())
{
zipFile.createNewFile();
}//根据文件路径构造一个文件输出流
out = newFileOutputStream(path);//传入文件输出流对象,创建ZIP数据输出流对象
zipOut = newZipOutputStream(out);//循环待压缩的文件列表
for(String fileRealPath : fileRealPathList)
{
FileInputStream in= null;try{
File file= newFile(fileRealPath);if (!file.exists())
{
log.error("文件不存在");throw new FileNotFoundException("文件不存在");
}//创建文件输入流对象
in = newFileInputStream(fileRealPath);//得到当前文件的文件名称//判断操作系统
String separateCharacter = "";
String os= System.getProperty("os.name");if (os.toLowerCase().startsWith("win"))
{//windows操作系统
separateCharacter = "//";
}else{//非windows操作系统
separateCharacter = "/";
}
String fileName=fileRealPath.substring(
fileRealPath.lastIndexOf(separateCharacter)+ 1, fileRealPath.length());//创建指向压缩原始文件的入口
ZipEntry entry = newZipEntry(fileName);
zipOut.putNextEntry(entry);//向压缩文件中输出数据
int nNumber = 0;byte[] buffer = new byte[512];while ((nNumber = in.read(buffer)) != -1)
{
zipOut.write(buffer,0, nNumber);
}
}catch(IOException e)
{
log.error("文件压缩异常-in,原因:", e);throw new IOException("文件压缩异常");
}finally{//关闭创建的流对象
if (null !=in)
{
in.close();
}
}
}
}catch(IOException e)
{
log.error("文件压缩异常-out,原因:", e);throw new IOException("文件压缩异常");
}finally{if (null !=zipOut)
{
zipOut.close();
}if (null !=out)
{
out.close();
}
}
File fiel= newFile(path);//调用导出到前端的方法
exportObeEventDataExcel(response,fiel);//删除本地压缩包
if (fiel.exists() &&fiel.isFile())
{
fiel.delete();
}//删除其他文件
for(String string : fileRealPathList) {
File fiel1= newFile(string);//删除本地压缩包
if (fiel1.exists() &&fiel1.isFile())
{
fiel1.delete();
}
}
}
java 解析csv_java解析CSV文件(getCsvData 解析CSV文件 zipFiles 打成压缩包 exportObeEventDataExcel 前端页面响应)...相关推荐
- 记录Zip4j压缩文件解压后文件显示异常
场景:从金山云链接中读取文件流,将文件保存到本地,然后将本地文件压缩成zip包通过接口传给前端页面 现象:图片及word显示异常 原图: 解压后: 用到工具zip4j 直接上代码 第一步,从云链接中获 ...
- Java文件读写和CSV文件解析(读取csv文件的一列或若干列)
文件类 Java 读文件流的知识不可少,先复习一下吧! OREACLE JDK8 DOCS 文件类是Java IO的一个对象,用于指定文件的相关信息,位置和名称信息.如txt文件,csv文件对Java ...
- java读取csv合适文件_解析-您可以推荐一个Java库来读取(并可能写入)CSV文件吗?...
Super CSV是读取/解析,验证和映射CSV文件到POJO的绝佳选择! 我们(Super CSV团队)刚刚发布了一个新版本(您可以从SourceForge或Maven下载它). 读取CSV文件 以 ...
- java代码中fastjson生成字符串和解析字符串的方法和javascript文件中字符串和json数组之间的转换方法...
1.java代码中fastjson生成字符串和解析字符串的方法 List<TemplateFull> templateFulls = new ArrayList<TemplateFu ...
- INI文件快速解析java工具包
FastIni 概述 相信大家都用过阿里的fastjson,它可以通过模板快速解析json字符串,也可以通过key快速获取json字符串中的值.通过模板类型快速解析json字符串是一个很好的想法,所以 ...
- java读取 info.plist源码_Java 解析 IPA 文件,读取 Info.plist 信息-Go语言中文社区
在做移动MDM功能的时候,就遇到了这样一个问题,当用户上传IPA文件时,我如何知道这个IPA文件的相关信息呢?IPA文件有一个很重要的文件Info.plist 就类似于Android程序的Manife ...
- 无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl/core]
无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl/core] jsp中出错提示: The absolute uri: h ...
- java对xml文件的解析_Java对XML文件的解析
XML简介 围绕XML涉及到四方面的技术: 1.数据定义Schema.DTD 2.数据解析DOM.SAX两种解析模型 3.样式风格XSTL,使用XSTL可以将XML文件中存放的内容按照指定的样式显示为 ...
- java 文件解析异常_java中异常的解析
Java Exception: 1.Error 2.Runtime Exception 运行时异常 3.Exception 4.throw 用户自定义异常 异常类分两大类型:Error类代表了编译和系 ...
最新文章
- linux如何添加默认路由表_Linux-如何添加路由表
- [置顶] ActivityGroup自我堆栈管理(复用现有activity)
- ASP.NET状态管理之三(隐藏域HiddenField)
- oracle ogg双向通步,使用ogg的Oracle-Oracle的双向复制
- python模拟手写_python-自己手写的贴吧爬虫
- PowerShell图形化编程2-快速入门
- Oracle学习:数值函数与转换函数
- MobileGestalt.h 头文件
- 如何多次读取request请求里的数据
- Go程序开发---Go环境配置:CentOS6.5+Go1.8标准包安装
- tortoisegit图标消失_TortoiseGit文件夹和文件图标不显示解决方法
- 【Google设计冲刺】一种适合于创新小组的协作方式
- Linux服务器管理神器-IPython
- Gridlayout
- 复旦大学网络认证linux,复旦大学校园网有线上网认证流程
- photoshop基础操作集合01
- mysql中的聚集索引(聚簇索引)、非聚集索引、稀疏索引、稠密索引
- PE文件学习系列二 DOS头分析
- excel怎样制作html,HTML_Excel/Access 97 网页制作速成,一、 利用Excel 97制作网页 - phpStudy...
- sql查询数据库表中重复数值