package com.mobanker.tkj.cw.core.util;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.log4j.Logger;
public class CSVUtils
{
static Logger logger=Logger.getLogger(CSVUtils.class);
/**
* 生成为CVS文件
* @param exportData
* 源数据List
* @param map
* csv文件的列表头map
* @param outPutPath
* 文件路径
* @param fileName
* 文件名称
* @return
*/
@SuppressWarnings("rawtypes")
public static File createCSVFile(List<Map> exportData, Map map, String outPutPath,
String fileName) {
File csvFile = null;
BufferedWriter csvFileOutputStream = null;
try {
File file = new File(outPutPath);
if (!file.exists()) {
file.mkdir();
}
//定义文件名格式并创建
// csvFile = File.createTempFile(fileName, ".csv", new File(outPutPath));
csvFile = new File(outPutPath, fileName+".csv");
logger.debug(">>>>>>>>>>>>>>>>>>csvFile:" + csvFile);
// UTF-8使正确读取分隔符","
csvFileOutputStream = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(csvFile), "UTF-8"), 1024);
System.out.println("csvFileOutputStream:" + csvFileOutputStream);
// 写入文件头部
for (Iterator propertyIterator = map.entrySet().iterator(); propertyIterator.hasNext();) {
java.util.Map.Entry propertyEntry = (java.util.Map.Entry) propertyIterator.next();
csvFileOutputStream.write("" + (String) propertyEntry.getValue() != null ? (String) propertyEntry.getValue() : "" + "");
if (propertyIterator.hasNext()) {
csvFileOutputStream.write(",");
}
}
csvFileOutputStream.newLine();
// 写入文件内容
for (Iterator iterator = exportData.iterator(); iterator.hasNext();) {
Object row = (Object) iterator.next();
for (Iterator propertyIterator = map.entrySet().iterator(); propertyIterator
.hasNext();) {
java.util.Map.Entry propertyEntry = (java.util.Map.Entry) propertyIterator
.next();
if(propertyEntry.getKey()!=null&&BeanUtils.getProperty(row,(String) propertyEntry.getKey())!=null){
csvFileOutputStream.write((String) BeanUtils.getProperty(row,(String) propertyEntry.getKey()));
}
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();
}
}
return csvFile;
}
/**
*
* <b>Description:</b>〈方法详细描述〉<br/>
* @param exportData
* @param map
* @param csvFile
* @return
* @author gaohailiang <br/>
* Create date: 2016年12月9日
* @throws IOException
*/
public static File apendCSVFile(List<Map> exportData, Map map, File csvFile) throws IOException {
BufferedWriter csvFileOutputStream = null;
try {
// UTF-8使正确读取分隔符","
csvFileOutputStream = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(csvFile,true), "UTF-8"), 1024);
System.out.println("csvFileOutputStream:" + csvFileOutputStream);
// 写入文件内容
for (Iterator iterator = exportData.iterator(); iterator.hasNext();) {
Object row = (Object) iterator.next();
for (Iterator propertyIterator = map.entrySet().iterator(); propertyIterator.hasNext();) {
java.util.Map.Entry propertyEntry = (java.util.Map.Entry) propertyIterator
.next();
if(propertyEntry.getKey()!=null&&BeanUtils.getProperty(row,(String) propertyEntry.getKey())!=null){
csvFileOutputStream.write((String) BeanUtils.getProperty(row,(String) propertyEntry.getKey()));
}
if (propertyIterator.hasNext()) {
csvFileOutputStream.write(",");
}
}
csvFileOutputStream.newLine();
}
csvFileOutputStream.flush();
exportData.clear();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
csvFileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return csvFile;
}
/**
* 下载文件
* @param response
* @param csvFilePath
* 文件路径
* @param fileName
* 文件名称
* @throws IOException
*/
public static void exportFile(HttpServletResponse response, String csvFilePath, String fileName)
throws IOException {
response.setContentType("application/csv;charset=UTF-8");
response.setHeader("Content-Disposition",
"attachment; filename=" + URLEncoder.encode(fileName, "UTF-8"));
InputStream in = null;
try {
in = new FileInputStream(csvFilePath);
int len = 0;
byte[] buffer = new byte[1024];
response.setCharacterEncoding("UTF-8");
OutputStream out = response.getOutputStream();
while ((len = in.read(buffer)) > 0) {
out.write(new byte[] { (byte) 0xEF, (byte) 0xBB, (byte) 0xBF });
out.write(buffer, 0, len);
}
} catch (FileNotFoundException e) {
System.out.println(e);
} finally {
if (in != null) {
try {
in.close();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
}
/**
* 删除该目录filePath下的所有文件
* @param filePath
* 文件目录路径
*/
public static void deleteFiles(String filePath) {
File file = new File(filePath);
if (file.exists()) {
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
if (files[i].isFile()) {
files[i].delete();
}
}
}
}
/**
* 删除单个文件
* @param filePath
* 文件目录路径
* @param fileName
* 文件名称
*/
public static void deleteFile(String filePath, String fileName) {
File file = new File(filePath);
if (file.exists()) {
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
if (files[i].isFile()) {
if (files[i].getName().equals(fileName)) {
files[i].delete();
return;
}
}
}
}
}
/**
* 测试数据
* @param args
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
public static void main(String[] args) {
List exportData = new ArrayList<Map>();
Map row1 = new LinkedHashMap<String, String>();
row1.put("1", "11");
row1.put("2", "12");
row1.put("3", "13");
row1.put("4", "14");
exportData.add(row1);
row1 = new LinkedHashMap<String, String>();
row1.put("1", "21");
row1.put("2", "22");
row1.put("3", "23");
row1.put("4", "24");
exportData.add(row1);
LinkedHashMap map = new LinkedHashMap();
map.put("1", "第一列");
map.put("2", "第二列");
map.put("3", "第三列");
map.put("4", "第四列");
String path = "c:/export/";
String fileName = "文件导出";
File file = CSVUtils.createCSVFile(exportData, map, path, fileName);
String fileName2 = file.getName();
System.out.println("文件名称:" + fileName2);
}
}
- 浏览: 307644 次
- 性别:
- 来自: 上海
最新评论
-
NEOGX:
http://www.tuicool.com/articles ...
Json转换利器Gson之实例一-简单对象转化和带泛型的List转化 -
么可k:
可以喔
Can not find the tag library descriptor for "http://java.sun.com/j... -
tianyi_qingwu:
解决了我的一个问题,学习了,谢谢!
Ant+Flex: Java Heap Space -
ldci3gandroid:
if(month==0){ year-=1;mont ...
java获取当前日期一个月后的日期 -
djcbpl:
好像不行啊!我放进去了,还是错的啊
Can not find the tag library descriptor for "http://java.sun.com/j...
相关推荐
CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。 CSV是一种通用的、相对简单的...
在我们需求中需要读取一个csv文件的数据,但是只有旧的csv的几列数据再新写入一个csv文件,而且在旧的数据有空的数据,需要判断旧的csv的空值。可能写的存在不完善!但是应用的需求里面还是能用的
主要介绍了java生成csv文件乱码的解决方法,大家可以直接看下面的示例
主要为大家详细介绍了java导出生成csv文件的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
influxDB2.0基本使用以及相关jar 导入CSV文件以及查询数据,内置生成CSV数据工具
采用 NSL-KDD 数据集,存放于 data/detection 文件夹下,以CSV文件格式组织 包含以下四个文件: KDDTrain+.csv ———— 训练数据集,一般用这个训练 KDDTrain+_20Percent.csv ———— 20%的训练数据集 KDDTest+....
Public class CsvHelper CSV文件转换类 Public class DataToExcel 操作EXCEL导出数据报表的类 Public class DESDEncrypt DES加密/解密帮助类。 Public class DirectoryHelper 文件夹帮助类 Public class ...
提供用于自动生成Java源代码的有用API,即,它允许从CSV文件和电子表格开始创建JavaBean和不可变类。 建于 -依赖管理 入门 最低要求 Java 1.7或更高版本-经过测试 一种构建自动化工具: 将JCoder添加到您的构建中 该...
java根据路径直接读取excel/csv文件,并遍历获取sheet中的所有信息,通过数据处理后重新生成新的文件。是个十分快捷方便的工具类。(当年不想手工做重复的生成处理数据时候,写个懒人必备的程序一键帮你解决)
Directory Lister Pro 可选择显示目录名、目录大小、目录的文件数、子目录、文件序号、文件路径、文件名称、扩展名、大小、日期、时间、类型、 所有者和属性、文件的版本、 说明、 公司信息等等,以及可执行文件 ...
StringTheory-工具该存储库包含4个工具,可使用的StringTheory类更轻松地编写和验证代码-通过在窗口中查看ST值或分割线来调试/跟踪ST代码。 -Scratch程序,用于编写和测试ST代码。 让它快速运行,然后粘贴到您的生产...
Java XML到CSV(XML2CSV)通用转换工具。 将一个或多个类似的XML文件展平为CSV投影。 我这样做是为了从大型XML文件中提取数据并将它们收集到使用电子表格更容易打开的文件中,因为当我需要(Java +真正的通用+独立的...
CsvHelper CSV文件导入DataTable和DataTable导出到Csv 4.DEncrypt 加密/解密帮助类 DEncrypt C# DEncrypt加密/解密帮助类 DESEncrypt Encrypt HashEncode MySecurity RSACryption 5.DLL COM.Excel.dll Excel.dll ...
csv_reports文件夹:包含从数据库中查询的关于文件格式、文件格式版本、MIME 类型、按年份的最后修改日期、未识别文件、Siegfried 警告和错误以及重复文件的 CSV 结果。 siegfried.csv: Siegfried 的完整 CSV 输出 ...
源代码以及用于在训练期间生成批次的工具。 这个 repo 与我们在小样本学习方面的工作有关:. 概括 关于迷你ImageNet mini-ImageNet 数据集被提出用于小样本学习评估。 由于使用 ImageNet 图像,它的复杂性很高,但与...
CSV文件导入DataTable和DataTable导出到Csv文件等操作 4.DEncrypt 加密/解密帮助类 DEncrypt C#DEncrypt加密/DEncrypt解密帮助类 ,多种方式,可以设置Key DESEncrypt C#DESEncrypt加密/DESEncrypt解密帮助类 ...
CSV文件导入DataTable和DataTable导出到Csv文件等操作 4.DEncrypt 加密/解密帮助类 DEncrypt C#DEncrypt加密/DEncrypt解密帮助类 ,多种方式,可以设置Key DESEncrypt C#DESEncrypt加密/DESEncrypt解密帮助类 ...
28. CSV文件转换 29. Chart图形 30. H5-微信 31. PDF 32. 分词辅助类 33. 序列化 34. 异步线程 35. 弹出消息类 36. 文件操作类 37. 日历 38. 日志 39. 时间操作类 40. 时间戳 41. 条形码 42. 正则表达式 43. 汉字转...