以流的形式直接导出 csv文件
2014-11-20 16:23
411 查看
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"); } }
相关文章推荐
- 通过mysql outfile 直接快速导出.csv文件,适用于量级很大的导出操作
- java导出文件之Excel(CSV)下并以流形式输出
- MySQL直接导出CSV文件,并解决中文乱码的问题
- 解决雷鸟导入OE导出的.csv文件乱码的问题
- Trac - 常见问题 - 导出的csv格式文件在Excel中处理unix时间戳
- MySQL 直接读取csv文件数据到表中
- 利用utl_file将数据导出为csv文件 http://ningoo.itpub.net
- DataGrid/DataSet导出到excle和csv文件
- php数据导入导出之excel(csv文件)
- datagrid数据导出到excel文件给客户端下载的几种方法 (xls,csv,html)
- 【完美解决ecside2.0RC1在weblogic8.1.6环境下导出xls,csv 文件为空的情况】~法老修正完整版!
- CSV文件直接读取
- 把notes里的以OLE形式存放的对象,导出成一个文件。
- bcp怎么导出一个表数据为带列名的csv格式文件
- asp.net(c#) 导出csv文件
- C#中数据以Excel文件形式导出
- 文件流形式导出为Excel的文件乱码问题
- 文件流形式导出为Excel的文件编码问题
- 动态导出为csv文件 (2)不带引号!
- 一个用servlet实现导出csv文件的实例