- 浏览: 181071 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
Errorize:
一个用servlet实现导出csv文件的实例 -
wendellhu:
求monkey talk应用文档的解压密码
monkey talk应用文档 -
wendellhu:
加密的?
monkey talk应用文档 -
hugang357:
hslh22 写道不错的资源,可以使用,只是没有最大最小值的限 ...
数字微调输入框 -
hslh22:
不错的资源,可以使用,只是没有最大最小值的限制,需要自己去加逻 ...
数字微调输入框
Java采用反射导出CSV文件替代导出Excel
package com.resoft.prophet.util; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; 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; /** * @作者: jack * @日期: 2011-05-19
* @描述: CSV导出工具 */ public class CSVUtils { /** * 导出为CVS文件 * * @param exportData */ public static File createCSVFile(List exportData, LinkedHashMap rowMapper, String outPutPath) { File csvFile = null; BufferedWriter csvFileOutputStream = null; try { csvFile = File.createTempFile("temp", ".csv", new File(outPutPath)); // GB2312使正确读取分隔符"," csvFileOutputStream = new BufferedWriter(new OutputStreamWriter(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(); for (Iterator propertyIterator = rowMapper.entrySet().iterator(); propertyIterator.hasNext();) { java.util.Map.Entry propertyEntry = (java.util.Map.Entry) propertyIterator.next(); csvFileOutputStream.write("\"" + BeanUtils.getProperty(row, propertyEntry.getKey().toString()).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(); } } return csvFile; } /** * 导出为CSV文件 * * @param response * @param exportData * @param propertyNames * @param fileName * @param outputPath * @throws FileNotFoundException */ public static void exportToCSVFile(HttpServletResponse response, List exportData, LinkedHashMap rowMapper, String fileName, String outputPath) throws FileNotFoundException { File csvFile = createCSVFile(exportData, rowMapper, outputPath); FileUtils.downFile(response, fileName, new FileInputStream(csvFile)); csvFile.delete(); } 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); List propertyNames = new ArrayList(); LinkedHashMap map = new LinkedHashMap(); map.put("1", "第一列"); map.put("2", "第二列"); map.put("3", "第三列"); map.put("4", "第四列"); CSVUtils.createCSVFile(exportData, map, "c:/"); } }
上述为导出为csv的代码,rowmapper存储列头以及数据的属性字符串,通过反射,得到bean中的属性值,此hashmap为linkedhashmap,确保列头有序,该代码可以从IBatis中得到List<Map>,List<实体类>,然后统一导出。
注意:需要注意的是写入文件时指定的是GB2312的编码,如果指定为UTF-8的编码,采用Excel打开为乱码,如果不写编码,默认为操作系统的编码,导出后采用Editplus打开为GB3212编码,考虑到服务器的默认编码可能不是客户端的中文操作系统的GB2312的编码,因此我们显示指定编码为GB2312。如果设置为UTF-8编码,Excel之所以为乱码,应该是Office程序按照操作系统的编码读取文件。
如果采用UNICODE编码,逗号可能无法正确解析,数据将合并为一列
对于ANSI编码用Excel可以正确打开无乱码,如果是中文windows平台,据说会转译为GB312,如果是日文的操作系统,转译为日文编码。
对于ANSI编码和GB2312编码的区别,需要再研究。
最近一直探索大数据量导出Excel的方案,采用导出为csv是一种比较变通的方式。
- 一个用servlet实现导出csv文件的实例.rar (66.5 KB)
- 下载次数: 85
发表评论
-
12hh
2013-06-07 09:35 745fdgtg -
百度只剩1
2012-03-22 00:10 0附件 -
Timer与TimerTask入门
2011-05-24 22:52 825Java2的开发包中提供了 ... -
Timer与TimerTask实例
2011-05-24 22:51 1348今天看了一下Timer与TimerTask的用法并且在网上 ... -
web应用每晚12点定时执行程序代码实例
2011-05-24 22:50 19961、当前web应用的web.xml文件配置容器监听类com ... -
Tomcat java 定时任务
2011-05-24 22:49 1164如何在Web工程中实现任 ... -
Java定时器在Web中的应用
2011-05-24 22:46 901本文实例的最终功能是每天某个时间点(如每晚22点)执行某一功能 ... -
java 导出成.csv文件的乱码问题
2011-05-19 23:54 2520已经解决因为所有页面都是用UTF-8的编码方式。本以为这 ... -
Google分页的经典案例
2011-05-05 22:26 755上一页 [1][2][3][4][5][6] ... -
Google分页的经典案例
2011-05-05 22:25 9091 、创建 Page 类, pack ... -
网络管理:openldap详解
2011-04-27 22:45 1055简介 LDAP是轻量目录 ... -
openldap的配置手册
2011-04-27 22:44 890最近一直在安装opneldap-2 ... -
slapd.conf 配置文件中的高级功能使用方法
2011-04-27 22:42 14481. 开启日志功能启用日 ... -
OpenLDAP主配置文件slapd.conf介绍
2011-04-27 22:41 1162安全起见,slapd.conf文件应该只让运行此进程的用户可读 ... -
定制你的LDAP目录的Schema
2011-04-27 22:38 1202(http://www.infoxa.com/asp/tech ... -
ubuntu 8.04上openldap的安装和使用
2011-04-27 22:36 10181、安装openldap。$ sudo apt-get ins ... -
ubuntu上部署OpenLDAP
2011-04-27 22:34 1691原文地址:https://help.ubuntu.com/co ... -
OpenLDAP中 Schema的详细介绍
2011-04-27 22:33 3068本章讲述了如何扩展用户使用的schema。本章假设阅读者已经熟 ... -
第一个JFreeChart实例
2011-01-21 00:12 2512JFreeChart的使用非常简单,我们只需要提供满 ... -
JFreeChart简介及下载、配置
2011-01-21 00:00 1721JFreeChart简介 JFreeChart是 ...
相关推荐
servlet实现的上传文件实例
介绍通过jsp servlet从后台数据库导出csv格式的方法
简单的jsp+servlet实现把xlsx(excel,07版之前为xlsx,之后为xls,xls用HSSFWorkBook)数据导入到mysql,并导出
本文实例为大家分享了JSP+Servlet实现文件上传到服务器功能的具体代码,供大家参考,具体内容如下 项目目录结构大致如下: 正如我在上图红线画的三个东西:Dao、service、servlet 这三层是主要的结构,类似 MVC ...
可以自己变化SQL语句执行 通用性强 适合像我一样的初手 大家测试的时候只要在 文本框中输入自己的 SQL语句就可以得到导出结果
完整的JSP+Servlet实现文件的上传下载
ajax+java servlet实现无刷新搜索实例(亲测可用) ,1.使用mysql数据库,已有sql语句;2.使用eclipse\MyEclipse导入项目即可;3.运行URL地址在doc/init.txt
纯Servlet实现用户管理系统(入门实例,深刻认识Servlet)
可以运行的POI导出Excel文件实例,里面有两种方法,一个是Servlet,一个是main
关于servlet上传的实例实现,使用servlet上传文件的实现,上传文件
jsp+servlet+jdbc实现简单的购物车实例,购物数据通过session存储 1、加入购物车时,把数据保存在session中 2、点击系统退出时,购物车中的数据插入到数据库购物车表 3、再次登录时,查询数据库购物车表的数据加载到...
基于eclipse,servlet实现的项目实例,提供框架参考实现。 运行sql,直接部署即可
使用CKEditor3.6.0版本,使用上传组件实现Servlet上传图片,含有列子
实验1: 利用servlet实现一个简单的聊天室 实验目的 (1) 理解servlet的工作原理 (2) 掌握servlet编程基本技能 实验内容及要求 1. 利用servlet技术实现一个简单的聊天室,实现多人同时交流。当发送聊天信息时,信息...
java servlet实现文件点击下载。 将资源解压后配置在tomcat中,输入http://localhost:8080/DownLoadFileDemo/即可看到点击下载的链接
今天和大家分享下基于servlet的方式实现文件上传; 1、众所周知在不实用框架的时候使用表单模式实现文件上传是无法接收其他的参数的;...3、如何解决了这里使用装饰器的模式完美的实现了servlet方式的文件上传;
一个简单的servlet加jsp的程序,实现用户注册登陆,有完整代码加逻辑。可以实现数据库连接,比较简单。
Servlet实现文件上传与下载 Servlet 文件上传与下载
开发工具是myEclipse,用 Servlet实现文件上传,通过commons-fileupload-1.2.1.jar commons-io-1.4.jar插件实现了文件上传