您的位置:首页 > 其它

以流的形式直接导出 csv文件

2014-11-20 16:23 381 查看
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.beanutils.BeanUtils;
import org.zkoss.io.FileWriter;
import org.zkoss.zul.Filedownload;

public class ExportCSV {

@SuppressWarnings("rawtypes")
public static File createCSVFile(List<Map<String,String>> exportData, Map<String,String> rowMapper,String filename) {
StringWriter stringWriter = new StringWriter();
BufferedWriter csvFileOutputStream = null;
StringBuffer b = null;
try {
b = new StringBuffer();
// GB2312使正确读取分隔符","
csvFileOutputStream = new BufferedWriter(stringWriter);
// 写入文件头部
for (Iterator propertyIterator = rowMapper.entrySet().iterator(); propertyIterator.hasNext();) {
java.util.Map.Entry propertyEntry = (java.util.Map.Entry) propertyIterator.next();
csvFileOutputStream.write("\""+ String.valueOf(propertyEntry.getValue().toString()) + "\"");
if (propertyIterator.hasNext()) {
csvFileOutputStream.write(",");
}
}
csvFileOutputStream.newLine();

// 写入文件内容
for (Iterator iterator = exportData.iterator(); iterator.hasNext();) {
Object row = (Object) iterator.next();

for (Iterator propertyIterator = rowMapper.entrySet().iterator(); propertyIterator.hasNext();) {
java.util.Map.Entry propertyEntry = (java.util.Map.Entry) propertyIterator.next();

String str="	"+String.valueOf(BeanUtils.getProperty(row, propertyEntry.getKey().toString()));

csvFileOutputStream.write("\""+ str + "\"");

System.out.println("每列::"+ ""+String.valueOf(BeanUtils.getProperty(row, propertyEntry.getKey().toString())));
if (propertyIterator.hasNext()) {
csvFileOutputStream.write(",");
}
}
System.out.println("换行:::::::::::::::::::::::::::::::::::");
if (iterator.hasNext()) {
csvFileOutputStream.newLine();
}
}
csvFileOutputStream.flush();
try {
Filedownload s = new Filedownload();
String str = stringWriter.getBuffer().toString();
s.save(str.getBytes("GB2312"), "application/octet-stream;charset=GB2312", filename);
} catch (Exception e1) {
e1.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
csvFileOutputStream.close();
stringWriter.close();

} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
public  static void down()
{
List<Map<String,String>> exportData = new ArrayList<Map<String,String>>();
Map<String,String> row1 = new HashMap<String, String>();
row1 = new LinkedHashMap<String, String>();
row1.put("1", "21");
row1.put("2", "22");
row1.put("3", "23");
row1.put("4", "24");
exportData.add(row1);

Map<String,String> map = new HashMap<String, String>();
map.put("1", "第一列");
map.put("2", "第二列");
map.put("3", "第三列");
map.put("4", "第四列");
ExportCSV.createCSVFile(exportData, map,  "abc.csv");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: