- 浏览: 60124 次
- 性别:
- 来自: 贵阳
文章分类
最新评论
-
feisuzhu:
Don't roll your own.这个是铁律。楼主要是学 ...
AES加解密算法(使用Base64做转码以及辅助加密) -
osacar:
这里DES还是AES???
AES加解密算法(使用Base64做转码以及辅助加密) -
1336224635:
着些不都是16进制表示的颜色吗?android 对颜色有要求吗 ...
android--color.xml
实例为SSH项目,县公司导出售后报表的DEMO,先要导入jxl.jar:
POJO实体类
查找数据的方法:
页面的导出按钮:
导出cvs的action:
最后还要在sturts.xml中配置:
import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.lang.reflect.Field; import java.util.List; import jxl.Workbook; import jxl.format.Colour; import jxl.write.Label; import jxl.write.WritableCellFormat; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; /** * 导出文件工具类 */ public class ExportUtil { /** * 创建TXT或者CSV文件 * * @param list 查询出的结果 * @param head 表头 * @param proerty 需要导出的列(与head对应) * @param fileName 文件名 * @return * @throws Exception */ public static File createTxtFile(List list, List<String> head, List<String> proerty, String fileName) throws Exception { File file = new File(fileName); BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(file)); StringBuilder sb = new StringBuilder(); for (String str : head) { sb.append("\t" + str + ","); } sb.append("\r\n"); Long row = 0L; for (Object obj : list) { Class className = obj.getClass(); // 反射所有字段 @SuppressWarnings("unused") Field[] fields = className.getDeclaredFields(); for (String str : proerty) { // 若该字段是需要导出的字段则写入Excel Object o = ReflectUtils.getProertyValue(obj, str); String value = o == null ? "" : o.toString(); // 设置cell的值 sb.append("\t" + value + ","); } sb.append("\r\n"); if (row % 1000 == 0) { out.write(sb.toString().getBytes(LX100Constant.CHAR_SET)); out.flush(); sb = new StringBuilder(); } } out.write(sb.toString().getBytes(LX100Constant.CHAR_SET)); out.flush(); out.close(); return file; } /** * 创建excel文件 * * @param list * @param head * @param proerty * @param fileName * @return * @throws Exception */ public static File createExcel(List list, List<String> head, List<String> proerty, String fileName) throws Exception { // 创建输出文件 File file = new File(fileName); int line = 0; int row = 0; int sheetNum = 1; // 表头格式 WritableCellFormat wcfF = new jxl.write.WritableCellFormat(); wcfF.setAlignment(jxl.format.Alignment.CENTRE); wcfF.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); @SuppressWarnings("unused") Colour olour; wcfF.setBackground(Colour.LIGHT_ORANGE); WritableWorkbook wwb = Workbook.createWorkbook(file); WritableSheet ws = wwb.createSheet("第" + sheetNum + "页", sheetNum); // 设置冻结首行 ws.getSettings().setVerticalFreeze(1); ws.getSettings().setFitWidth(100); // 数据格式 WritableCellFormat dateDcfF = new jxl.write.WritableCellFormat(); dateDcfF.setWrap(true); dateDcfF.setAlignment(jxl.format.Alignment.CENTRE); dateDcfF.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); // 控制列宽 ws.setColumnView(0, 10); ws.setColumnView(1, 18); ws.setColumnView(2, 18); ws.setColumnView(3, 18); ws.setColumnView(4, 18); ws.setColumnView(5, 25); ws.setColumnView(6, 18); ws.setColumnView(7, 18); ws.setColumnView(8, 18); ws.setColumnView(9, 18); ws.setColumnView(10, 18); ws.setColumnView(11, 18); ws.setColumnView(12, 18); ws.setColumnView(13, 18); ws.setColumnView(14, 18); ws.setColumnView(15, 18); sheetNum++; // 写入表头 for (String str : head) { Label label = new Label(line, 0, str, wcfF); ws.addCell(label); line++; } row++; // 写入数据 for (Object obj : list) { line = 0; Class className = obj.getClass(); // 反射所有字段 Field[] fields = className.getDeclaredFields(); for (String str : proerty) { for (Field field : fields) { // 若该字段是需要导出的字段则写入Excel if (str.equals(field.getName())) { // 修改相应filed的权限 boolean accessFlag = field.isAccessible(); field.setAccessible(true); // 读取对象中相应的属性的值 String value = field.get(obj).toString(); if (str.equals("commendTime")) { value = field.get(obj).toString().substring(0, 19); } // 设置cell的值 Label label = new Label(line, row, value, dateDcfF); ws.addCell(label); // 恢复相应field的权限 field.setAccessible(accessFlag); line++; } } } row++; // 行数超过10000行是数据放入下一个sheet if (row % 10000 == 0) { // 设置标题格式 line = 0; row = 0; ws = wwb.createSheet("第" + sheetNum + "页", sheetNum); // 设置冻结首行 ws.getSettings().setVerticalFreeze(1); // 控制列宽 ws.setColumnView(0, 10); ws.setColumnView(1, 18); ws.setColumnView(2, 18); ws.setColumnView(3, 18); ws.setColumnView(4, 18); sheetNum++; // 再次写入表头 for (String str : head) { Label label = new Label(line, 0, str, wcfF); ws.addCell(label); line++; } row++; } } // 写入数据并关闭文件 wwb.write(); wwb.close(); return file; } }
POJO实体类
/** * 售后信息 */ public class FreeCallInfo { //商品ID private Long goodsId; // 机型 private String goodsName; //县公司Id private Long cityId; // 县公司名称 private String cityName; // 分公司Id private Long countyId; / 分公司名称 private String countyName; // 数量 private Long maintainNumber; // 修复方式 private String maintainType; //维修方式 private Long auditIsMaintain; //get、set }
查找数据的方法:
public List<FreeCallInfo> query(Long cityId, Long countyId, Long mainType, String keyWord, String startTime, String endTime) { Object[] objs = null; StringBuilder sb = new StringBuilder( " select gi.goods_name as goodsName, " + "case" + " when fm.audit_is_machine = 0 then" + " '维修'" + " when fm.audit_is_machine = 1 then " + " '换机'" + " when fm.audit_is_machine = 2 then " + " '丢失'" + " end as maintainType," + "count(fm.goods_id) as maintainNumber" + " from erp_freecall_monitor fm" + " left join erp_goods_info gi" + " on fm.goods_id = gi.id" + " left join erp_organisation oo" + " on oo.id = fm.org_id" + " left join erp_dim_county dc" + " on oo.county_id = dc.county_id" + " left join erp_dim_city cc" + " on cc.city_id = dc.city_id " + " where fm.record_status = 2 "); if (mainType == 3) { objs = new Object[] { cityId, countyId, keyWord, startTime, endTime }; sb.append("and oo.city_id = ? and oo.county_id = ? and gi.goods_name like ? "); } else { objs = new Object[] { cityId, countyId, mainType, keyWord, startTime, endTime }; sb.append("and oo.city_id = ? and oo.county_id = ? and fm.audit_is_machine = ? and gi.goods_name like ? "); } sb.append("and to_char(fm.maintain_time, 'yyyy-MM-dd') >= ? " + "and to_char(fm.maintain_time, 'yyyy-MM-dd') <= ? " ); sb.append("group by gi.goods_name, fm.audit_is_machine"); List list = (List) this.getJdbcTemplate().query(sb.toString(), objs,new RowMapperResultSetExtractor(new RowMapper() { public Object mapRow(ResultSet res, int arg1) throws SQLException { FreeCallInfo fc = new FreeCallInfo(); fc.setGoodsName(res.getString("goodsName")); fc.setMaintainType(res.getString("maintainType")); fc.setMaintainNumber(res.getLong("maintainNumber")); return fc; } })); return list; }
页面的导出按钮:
<input type="button" value="导出" <s:if test="pagination.total == 0">disabled="disabled"</s:if> onclick="window.location='<%=basePath%>afterSalesAction!countyExportMaintainInfo.action?mainType=${mainType}&keyWord=${keyWord}&startTime=${startTime}&endTime=${endTime}'" />
导出cvs的action:
/** * 县公司导出售后维修报表 */ public String countyExportMaintainInfo() { try { freeCallInfolList = freeCallMonitorService.query(user.getOrganisation().getCityId(), user.getOrganisation().getCountyId(), Long.valueOf(mainType), keyWord, startTime, endTime); String path = this.getServletContext().getRealPath("/"); fileName = new String("县公司售后维修报表统计.CSV".getBytes(LX100Constant.CHAR_SET), "ISO8859_1"); tmpFileName = "temp.csv"; List<String> head = new ArrayList<String>(); head.add("机型"); head.add("维修方式"); head.add("数量"); List<String> proerty = new ArrayList<String>(); proerty.add("goodsName"); proerty.add("maintainType"); proerty.add("maintainNumber"); File file = ExportUtil.createTxtFile(freeCallInfolList, head, proerty, path + tmpFileName); inputStream = new FileInputStream(file); log.info("用户导出县公司售后维修报表成功"); } catch (Exception e) { log.error("用户导出县公司售后维修报表异常,创建文件异常{}", new Object[] { e }); } return "export_success"; }
最后还要在sturts.xml中配置:
<result name="export_success" type="stream"> <param name="inputName">inputStream</param> <param name="contentType">application/octet-stream</param> <param name="contentDisposition">attachment;filename="${fileName}"</param> <param name="bufferSize">500000</param> </result>
发表评论
-
JDBC与Hibernate区别
2013-04-01 17:33 1100JDBC与Hibernate在性能上相 ... -
HTTP 错误总汇
2012-11-28 17:05 920HTTP 错误 400 400 请求出错 由于语法格式有误 ... -
常用JAVA工具类
2012-11-26 11:20 994获取访问者ip /** ... -
Hibernate懒加载解析(转)
2012-11-14 13:29 1185在Hibernate框架中,当我们要访问的数据量过大时 ... -
移动设备开发中WebService的详解
2012-06-17 11:15 1721看到有很多朋友对WebService还不是很了解,在此就详细的 ... -
用JavaMail发送邮件(含实例)
2012-06-16 14:02 1275JavaMail是Sun发布的处理电子邮件的应用程序接口,它预 ... -
将网页数据导出到Excel(最简单的方式)
2012-06-16 13:46 1704下面这种方式,是将页面 ... -
jxl使用实例(Java-->Excel)
2012-06-16 13:43 1242运行本实例的前提:去网上下载一个叫jxl.jar的ja ... -
RSA加解密
2012-04-18 19:43 1524import java.io.FileOutputStre ... -
AES加解密算法(使用Base64做转码以及辅助加密)
2012-04-18 19:37 2321import javax.crypto.Cipher; ... -
MD5加密
2012-04-18 19:32 859public class MD5Util { /* ...
相关推荐
当需要从Web应用,如PHP驱动的网站,导出数据时,CSV是理想的选择,特别是对于账单、订单等大量结构化数据的批量导出。下面我们将深入探讨如何使用PHP实现CSV格式的数据导出。 1. CSV文件格式介绍: CSV文件由行...
在IT行业中,处理大量数据是常见的挑战之一,尤其是在数据导出方面。本实例聚焦于“java实现csv导出千万级数据实例”,旨在提供一个高效、稳定的解决方案,避免因数据量过大而导致的性能问题,如Java中的栈溢出...
2. **CSV(Comma Separated Values)格式**:CSV是一种简单但非常实用的数据存储格式,以逗号分隔每一列数据。在PHP中,可以使用fgetcsv()和fputcsv()函数轻松地进行CSV文件的读写操作。对于小规模数据,CSV文件因其...
而CSV(Comma Separated Values)格式则是一种通用的数据交换格式,因其简洁和易读性,常用于导入和导出表格数据。本篇将详细介绍如何使用PHP处理CSV格式的表格数据并将其导入数据库,以满足大批量数据操作的需求。 ...
3. **数据预处理**:可能需要对读取的数据进行清洗、格式转换等操作,以符合MySQL数据库中的数据类型和格式。 4. **连接MySQL数据库**:使用PHP的PDO或mysqli扩展,建立与MySQL数据库的连接。记得设置适当的连接...
在IT行业中,CSV(Comma Separated Values)文件是一种广泛使用的数据交换格式,因其简单、通用而备受青睐。ThinkPHP是中国流行的PHP框架之一,它提供了一系列功能强大的工具,包括处理CSV文件的导入与导出。在...
csv文件是 comma separated values 的缩写,常用于数据交换和导入导出操作。然而,在Java中读取和写入csv文件时,中文字符如果不正确地处理,可能会出现乱码的情况。下面我们将详细介绍Java避免UTF-8的csv文件打开...
在Java编程中,处理Office文档和PDF文件是常见的任务,特别是在报表生成和数据导出的场景下。本篇文章主要介绍了如何使用Java来操作Office文件(如Excel)和PDF文件,以便将页面列表导出为CSV、Excel和PDF格式的报表...
冻结单元格单元格函数行高和列宽设置复制, 剪切, 粘贴 自动填充插入行, 列 (处理中)删除行, 列 )隐藏行, 列支持多个sheet表打印数据验证导出XLSX导入XLSX导出CVS导入CVS中)导入图片 )数据筛选,高性能 Web ...
4. **导出功能**:能够将搜索结果导出为各种格式,如CSV或PDF,方便进一步分析或报告。 5. **社区支持**:得益于开源社区,用户可以获取及时的技术支持和更新,同时也可以贡献自己的改进和新功能。 在维护和升级...
在现代软件开发中,Web Service是一种允许不同系统之间交换数据和服务的方式,它基于SOAP(Simple Object Access Protocol)进行通信,SOAP是基于XML的协议,确保了跨平台和跨语言的兼容性。WSDL(Web Services ...
Android传感器测试,包括加速度、方向等数据,保存到数据库,可导出到Excel以便分析研究 软件开发设计:PHP、QT、应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、web、C#等语言的项目开发与...
修复措施是删除Web目录中的`.svn`文件夹,并规范使用导出功能。 3. **hg源码泄漏**:Mercurial(hg)版本控制系统在`hg init`后会创建`.hg`目录,攻击者利用dvcs-ripper(https://github.com/kost/dvcs-ripper)...
论坛数据导出,可通过Web管理界面将论坛数据以树形结构导出到XML文件, 方便Web Services等拓展应用。 论坛版主功能,可设定论坛版主独立管理功能。 积分功能。 Jive论坛的开发是很有意思, 一开始的Jive 1.2.4是...
开发者可以方便地导入和导出源代码,与其他团队成员协作,以及利用版本控制系统如CVS或SVN进行代码版本管理。实例中可能包含关于团队开发流程和版本控制实践的相关代码。 总的来说,《PowerBuilder 8.0开发应用实例...
导入模块允许将现有的项目导入到CVS仓库,导出模块则用于将仓库中的项目复制到本地,便于开发和测试。 CvstracNT是一款与CVS集成的web界面工具,用于追踪代码版本和提供项目报告。它的安装和使用可以帮助团队更好地...