- 浏览: 188326 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
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 781fdgtg -
百度只剩1
2012-03-22 00:10 0附件 -
Timer与TimerTask入门
2011-05-24 22:52 861Java2的开发包中提供了 ... -
Timer与TimerTask实例
2011-05-24 22:51 1388今天看了一下Timer与TimerTask的用法并且在网上 ... -
web应用每晚12点定时执行程序代码实例
2011-05-24 22:50 20941、当前web应用的web.xml文件配置容器监听类com ... -
Tomcat java 定时任务
2011-05-24 22:49 1214如何在Web工程中实现任 ... -
Java定时器在Web中的应用
2011-05-24 22:46 937本文实例的最终功能是每天某个时间点(如每晚22点)执行某一功能 ... -
java 导出成.csv文件的乱码问题
2011-05-19 23:54 2578已经解决因为所有页面都是用UTF-8的编码方式。本以为这 ... -
Google分页的经典案例
2011-05-05 22:26 796上一页 [1][2][3][4][5][6] ... -
Google分页的经典案例
2011-05-05 22:25 10021 、创建 Page 类, pack ... -
网络管理:openldap详解
2011-04-27 22:45 1110简介 LDAP是轻量目录 ... -
openldap的配置手册
2011-04-27 22:44 930最近一直在安装opneldap-2 ... -
slapd.conf 配置文件中的高级功能使用方法
2011-04-27 22:42 14911. 开启日志功能启用日 ... -
OpenLDAP主配置文件slapd.conf介绍
2011-04-27 22:41 1292安全起见,slapd.conf文件应该只让运行此进程的用户可读 ... -
定制你的LDAP目录的Schema
2011-04-27 22:38 1237(http://www.infoxa.com/asp/tech ... -
ubuntu 8.04上openldap的安装和使用
2011-04-27 22:36 10581、安装openldap。$ sudo apt-get ins ... -
ubuntu上部署OpenLDAP
2011-04-27 22:34 1787原文地址:https://help.ubuntu.com/co ... -
OpenLDAP中 Schema的详细介绍
2011-04-27 22:33 3163本章讲述了如何扩展用户使用的schema。本章假设阅读者已经熟 ... -
第一个JFreeChart实例
2011-01-21 00:12 2550JFreeChart的使用非常简单,我们只需要提供满 ... -
JFreeChart简介及下载、配置
2011-01-21 00:00 1767JFreeChart简介 JFreeChart是 ...
相关推荐
在给定的压缩包中的"一个用servlet实现导出csv文件的实例 - Java编程.mht"文件,很可能是提供了一个使用Servlet导出CSV文件的示例代码。要深入理解这个实例,你需要打开文件查看具体的Java代码,学习如何在Servlet中...
- Servlet可能提供导出数据到CSV或Excel的功能。当用户请求导出时,Servlet会生成包含所有或特定记录的文件内容。 - 使用`OutputStream`将数据写入响应流,设置合适的MIME类型和文件名,使浏览器能够下载文件。 ...
描述中提到"我的实例没有jar包",意味着作者可能在博客中分享了一个不包含具体库文件(如JasperReport和Servlet相关的jar包)的示例项目,而是提供了如何配置和使用这些库的指导。通常,开发者需要自行下载必要的...
在JSP环境下实现文件导出至Excel的第一种方法较为简单,主要通过修改JSP页面的`Content-Type`属性来完成。`Content-Type`属性用于指定响应的数据类型,浏览器接收到这一信息后,会根据相应的类型处理数据。 **具体...
Java Servlet技术是Web...总的来说,这个Java Servlet电子商城项目涵盖了Web开发的多个关键领域,包括用户认证、购物行为管理、支付集成、订单处理、邮件服务和数据展示,是学习和实践Servlet技术的一个很好的实例。
DisplayTag是一个开源的Java Web开发库,用于生成复杂的表格,提供了很多高级功能,如排序、分页、国际化、导出等。它简化了在Web应用中处理表格展示的工作,极大地提高了开发效率。以下是对DisplayTag标签、源码、...
JasperReport是一个用Java编写的开源报表库,它允许开发人员设计、填充并输出各种类型的报表,如PDF、HTML、Excel、CSV等。JasperReport支持复杂的报表设计,包括分组、排序、计算以及自定义样式。报表模板通常以....
2. **创建报表项目**:在Eclipse中新建一个Birt报表项目,这将包含报表设计文件和相关的资源文件。 3. **设计报表**:使用Birt设计器,选择数据源(如数据库、XML文件或Web服务),编写SQL查询或使用现有数据集。...
Apache POI 是一个流行的开源库,允许Java程序读写Microsoft Office格式的文件,包括Excel(.xlsx 和 .xls)。本教程将详细介绍如何使用POI库在Java中读取Excel文件,并通过Web服务器提供给用户下载。 首先,我们...
文章通过对Excel对象模型的介绍,展示了如何利用JavaBean实现Web应用中的数据处理,以及如何通过Servlet处理HTTP请求,最终将数据导出为Excel文件或从Excel文件导入数据到Web应用中。文章中举例说明了如何使用这些...
首先,JFreeReport的核心特性包括自定义模板设计、多种数据源支持(如数据库、CSV文件等)、图表生成以及灵活的数据格式化。它的灵活性和易用性使得开发者能够快速构建报表,而无需深入学习复杂的报表语言或API。 ...
“jsp mysql学生管理系统”是一个典型的Web应用程序实例,展示了JSP与MySQL如何协同工作以实现数据的动态管理和交互。通过学习和实践此类项目,开发者可以加深对Web开发、数据库管理和软件架构设计的理解,同时为更...
4. 报表生成:系统应具备生成工资单和工资统计报表的能力,可能使用Java的I/O流进行文件操作,导出CSV或PDF格式的报表。 四、设计模式与原则 1. 单例模式:用于数据库连接池,确保在整个应用程序中只有一个数据库...
6. **数据导入导出**:在业务场景中,用户可能需要导入或导出数据,例如CSV或Excel文件。在SSM+EasyUI案例中,可以通过文件上传功能接收用户上传的文件,然后利用Java处理这些文件并将其导入到数据库。反之,导出...
JasperReport是一个用Java编写的报表库,它可以生成PDF、HTML、XLS、CSV等多种格式的报表。它的灵活性在于可以通过XML设计报表模板,使得非技术人员也能进行报表布局和样式的设计。 2. **iReport集成** iReport是...
1. **子报表**:允许在一个报表中嵌套另一个报表,实现复杂报表结构。 2. **图表**:JasperReports支持各种图表类型,如柱状图、饼图、线图等,可以直接从数据源生成。 3. **参数传递**:报表可以接受外部参数,...
这可能包括创建一个Servlet,该Servlet接收请求,生成报表,然后将其以特定格式返回给浏览器。在这样的项目中,你可能会看到以下关键代码片段: 1. 加载报表模板: ```java InputStream reportStream = getClass()....
"studio-3t-x64.msi.zip"文件是一个包含32位(x86)版本的Studio 3T安装程序的压缩包,其主要子文件"studio-3t-x64.msi"是Windows操作系统上的MSI安装程序。这个安装程序使得用户能够在Windows环境下便捷地安装和配置...
这个基于JSP的学生信息管理系统是一个典型的JavaWeb应用实例,它展示了如何利用JSP、Servlet、数据库等技术实现一个完整的管理信息系统。通过学习和分析这个系统,开发者可以加深对JavaWeb开发的理解,提升实际项目...