- 浏览: 1229351 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (718)
- HTML (13)
- JS基础 (23)
- JS应用 (40)
- AJAX (6)
- JSP相关 (12)
- JAVA基础 (52)
- JAVA应用 (74)
- APPLET (11)
- SWING\RCP (2)
- JAVA反射 (6)
- 设计模式 (26)
- 数据库设计 (20)
- Struts (35)
- Struts2 (12)
- Spring (22)
- Hibernate (45)
- Ibatis (18)
- mybatis (3)
- SSH (8)
- UML (5)
- WebService (3)
- XML (16)
- Log4j (7)
- WEB容器 (26)
- 数据结构 (36)
- Linux (34)
- Ruby on Rails (1)
- 其它技术 (27)
- IDE配置 (15)
- 项目实战 (2)
- Oracle (69)
- JAVA报表 (7)
- Android学习 (2)
- 博客链接 (1)
- 网络基础 (1)
- WEB集群 (1)
- .Net开发 (11)
- PB (4)
- 系统构建 (15)
最新评论
-
jnjeC:
牛逼啊哥们,讲得太好了
Maven仓库理解、如何引入本地包、Maven多种方式打可执行jar包 -
九尾狐的yi巴:
很好 感谢!
Itext中文处理(更新版) -
luweifeng1983:
有用的,重启一下嘛。
设置eclipse外部修改文件后自动刷新 -
Master-Gao:
设置了也不管用,怎么破呢?
设置eclipse外部修改文件后自动刷新 -
aigo_h:
锋子还有时间写博客,还是很闲哈!
Add directory entries问题
package com.ztesoft.bidding.contract; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.sql.SQLException; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.poi.poifs.filesystem.DirectoryEntry; import org.apache.poi.poifs.filesystem.DocumentEntry; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import net.buffalo.common.BaseAppCONST; import net.buffalo.common.DAOFactory; import net.sf.jasperreports.engine.JRDataSource; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JRExporter; import net.sf.jasperreports.engine.JRExporterParameter; import net.sf.jasperreports.engine.JRRuntimeException; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; import net.sf.jasperreports.engine.export.JRRtfExporter; import net.sf.jasperreports.engine.util.JRLoader; import com.ztesoft.bidding.contract.dao.ContractInfoDAO; import com.ztesoft.bidding.contract.vo.ContractVO; public class ContractInfoService { private ContractInfoDAO contractInfoDAO = null; public ContractInfoService() { contractInfoDAO = (ContractInfoDAO) DAOFactory .getDAO(ContractInfoDAO.class); } /* * @生成合同模板 */ public void createContract(int procurementItemId, int contractId) throws SQLException { try { //保存服务器路径 String FileUrl = BaseAppCONST.getProperty("upload.contractPath"); /*String root_path = this.getServletContext().getRealPath(""); System.out.println(root_path);*/ String fineNameId = "合同模板" + String.valueOf(contractId); String reportFilePath = "F:\\tomcat-5.5\\webapps\\BiddingOnline\\WEB-INF\\classes\\com\\ztesoft\\bidding\\contract\\jspreport\\javaBean.jasper "; File reportFile1 = new File(reportFilePath); if (!reportFile1.exists()) throw new JRRuntimeException("没找到合同模板路径"); JasperReport jasperReport1 = (JasperReport) JRLoader .loadObject(reportFile1.getPath()); //-------数据传输------------------ List<testVo> data = new ArrayList<testVo>(); testVo TestVo1 = new testVo(); TestVo1 = dataSource(procurementItemId); Map<String, Object> map = new HashMap<String, Object>(); map.put("partnerName", TestVo1.getPartnerName()); map.put("contactMan", TestVo1.getContactMan()); map.put("contactTel", TestVo1.getContactTel()); map.put("bank", TestVo1.getBank()); map.put("account", TestVo1.getAccount()); map.put("buyerName", TestVo1.getPartyName()); map.put("exDate", TestVo1.getExDate().toString()); map.put("address", TestVo1.getAddress()); map.put("pContactMan", TestVo1.getPContactMan()); map.put("pContactPhone", TestVo1.getPContactPhone()); //一条记录就是个vo List<testVo> list4 = (List<testVo>) contractInfoDAO .countInfo(procurementItemId); List<testVo> list5 = (List<testVo>) contractInfoDAO .parts(procurementItemId); String name = null; String remark = null; String budgetAmount = null; String price = null; //金额大小写转换 对于最后总价价格total_price String totalPrice = list4.get(0).getTotalPrice(); map.put("totalPrice", totalPrice); double BigTotalPrice = Double.parseDouble(totalPrice); String ChineseCurrency = bigMoney(new Double(BigTotalPrice)); map.put("bigTotalPrice", ChineseCurrency); //得到商品及其配件 价格,数量,总价, int count = list4.size() + list5.size(); for (int i = 0; i < count; i++) { testVo TestVo = new testVo(); if (list4.size() > i) { name = list4.get(i).getName(); remark = list4.get(i).getRemark(); budgetAmount = list4.get(i).getBudgetAmount(); price = list4.get(i).getPrice(); TestVo.setName(name); TestVo.setRemark(remark); TestVo.setBudgetAmount(budgetAmount); TestVo.setPrice(price); } else { int k = i - list4.size(); name = list5.get(k).getName(); remark = list5.get(k).getRemark(); TestVo.setName(name); TestVo.setRemark(remark); TestVo.setPrice("0"); } data.add(TestVo); } JRDataSource dataSource = new JRBeanCollectionDataSource(data); /**********数据传输***************/ JasperPrint jasperPrint1 = JasperFillManager.fillReport( jasperReport1, map, dataSource); JRExporter exporter = null; exporter = new JRRtfExporter(); List reportlist = (List) new java.util.ArrayList(); reportlist.add(jasperPrint1); System.out.println(reportlist.size() + "数据正常传出"); byte[] bytes; ByteArrayOutputStream baos = new ByteArrayOutputStream(); exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, reportlist); exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, baos); exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint1); exporter.exportReport(); bytes = baos.toByteArray(); /****************************/ ByteArrayInputStream bais = new ByteArrayInputStream(bytes); POIFSFileSystem fs = new POIFSFileSystem(); DirectoryEntry directory = fs.getRoot(); DocumentEntry de = directory.createDocument("WordDocument", bais); //String fineName = "合同模板"; String path = FileUrl + fineNameId + ".doc"; FileOutputStream ostream = new FileOutputStream(path); fs.writeFilesystem(ostream); //插入合同路径文件名称,如果数据库中有该文档则提示用户 String datePath = contractInfoDAO.getPath(contractId); if (path.equals(datePath)) { System.out.println("已经存在此文档"); } else { insertContract(fineNameId, path); } bais.close(); ostream.close(); } catch (JRException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /* @创建合同信息 * @将文件名和路径加入文档库 * @1合同名称 2 path */ public void insertContract(String fineName, String path) throws SQLException { contractInfoDAO.addContract(fineName, path); } /* * @取得文件的路径根据合同的id */ public String getPath(int contractId) throws SQLException { System.out.println(contractInfoDAO.getPath(contractId)); return contractInfoDAO.getPath(contractId); } /* * @取得数据源 */ public testVo dataSource(int procurementItemId) throws SQLException { /** * 根据采购结果查询供应商信息 查询出来的是一天供应商信息 * @Title: * @Description: contactMan; 供应商联系人 * @param @param contactTel ; 供应商联系电话 * @param @param bank; 银行 * @param @param Account 账户 * @param @param exDate; 交货期 * @param @param address; 交货地点 * @param @param pContactMan; 采购联系人 */ testVo TestVo = new testVo(); List<testVo> list = (List<testVo>) contractInfoDAO .supplierInfo(procurementItemId); String partnerName = list.get(0).getPartnerName(); String contactMan = list.get(0).getContactMan(); String contactTel = list.get(0).getContactTel(); String bank = list.get(0).getBank(); String account = list.get(0).getAccount(); TestVo.setPartnerName(partnerName); TestVo.setContactMan(contactMan); TestVo.setContactTel(contactTel); TestVo.setBank(bank); TestVo.setAccount(account); //采购单位 List<testVo> list2 = (List<testVo>) contractInfoDAO .buyerName(procurementItemId); String buyerName = list2.get(0).getPartyName(); /** * 根据采购结果查询供应商信息 查询出来的是一天供应商信息 * @Title: * @param @param exDate ; 交货期 * @param @param address; 交货地点 * @param @param pContactMan 采购联系人 * @param @param pContactPhone; 采购联系人 */ TestVo.setPartyName(buyerName); List<testVo> list3 = (List<testVo>) contractInfoDAO .contractItem(procurementItemId); Date exDate = list3.get(0).getExDate(); String address = list3.get(0).getAddress(); String pContactMan = list3.get(0).getPContactMan(); String pContactPhone = list3.get(0).getPContactPhone(); TestVo.setExDate(exDate); TestVo.setAddress(address); TestVo.setPContactMan(pContactMan); TestVo.setPContactPhone(pContactPhone); return TestVo; } /* * @金额换算大写 */ public String bigMoney(Object ob) { String s = new DecimalFormat("#.00").format(ob); s = s.replaceAll("\\.", "");// 将字符串中的"."去掉 char d[] = { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' }; String unit = "仟佰拾兆仟佰拾亿仟佰拾万仟佰拾元角分"; int c = unit.length(); StringBuffer sb = new StringBuffer(unit); for (int i = s.length() - 1; i >= 0; i--) { sb.insert(c - s.length() + i, d[s.charAt(i) - 0x30]); } s = sb.substring(c - s.length(), c + s.length()); s = s.replaceAll("零[仟佰拾]", "零").replaceAll("零{2,}", "零").replaceAll( "零([兆万元Ԫ])", "$1").replaceAll("零[角分]", ""); return s; } }
上文引自:http://sunnymod.iteye.com/blog/805659
发表评论
-
JAVA短信发送及JAVA发送http请求与处理
2016-06-22 14:34 606JAVA发送HTTP请求与处理参考: http://ww ... -
Java Zip应用
2016-06-22 14:30 644应用系统中使用jdk原生 ... -
模拟tomcat进行http请求及响应处理:BufferedReader类的readLine在socket网络编程应用时发生阻塞
2016-05-11 15:04 1763最近写一个简单的程序模拟tomcat进行http请求及响应 ... -
Castor-xml映射出现节点重复问题解决
2015-08-13 16:24 1210最近在使用Castor-xml生成XML时发现生成的格式不 ... -
Add directory entries问题
2014-08-05 10:24 1898用spring注解的项目,eclipse可以运行,打成jar ... -
BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别
2013-01-25 16:21 885http://www.cnblogs.com/fayf/ar ... -
java.net.BindException: Cannot assign requested address
2012-06-13 14:10 893转:http://wgkgood.blog.51cto ... -
Duplicate name in Manifest: Depends-On
2012-06-13 13:13 1645解决方法:http://ww2.sjc.edu/faculty ... -
java tree
2011-11-16 02:01 1294import java.util.ArrayList; im ... -
jacob操作word和excel
2011-07-28 17:00 906http://danadler.com/jacob/ -
获得PrepareStatement 的最终执行语句
2011-07-04 10:07 1017方法一:http://www.blogjava.net/ ... -
Non-terminating decimal expansion; no exact representable decimal result
2011-06-24 16:03 2613由于需要处理精度比较高的浮点数,所以弃用double类型,改用 ... -
JXLS应用示例
2011-06-03 01:41 3496JXLS在循环的记录前加序号: <jx:f ... -
月份加减方法处理
2011-06-03 00:52 921private static String monthAdd ... -
JAVA 5.0 后 自带监控工具 jps、jinfo、jstat、jma
2011-05-12 16:25 1242最近有个客户要进行WebLogic性能调优,但因为他们没有性能 ... -
定时器的实现、java定时器介绍与Spring中定时器的配置
2011-04-28 15:05 25431定时器的作用 在实际的开发中,如果项目中需要定时执行或者需 ... -
ClientAbortException,Connection reset by peer: socket write error
2011-03-07 11:24 6105extremetable导出excel,弹出一个下载窗口,这 ... -
JAVA包生成EXE应用实例
2011-01-06 15:35 1036相关文章:http://blog.csdn.net/fresh ... -
RMI客户端调用远程服务器方法-远程方法调用
2010-12-27 16:45 2752RMI软件下载:http://www.genady.net/r ... -
JAVA jar打包时MANIFEST.MF格式约定
2010-12-10 11:12 2228Manifest-Version: 1.0 Created-B ...
相关推荐
在这个场景中,我们将讨论如何利用javabean作为ireport的数据源来生成报表。首先,我们需要理解javabean和ireport的基本概念。 **javabean** 是Java编程语言中的一种简单对象,遵循一定的规范,通常用于封装数据和...
### Java调用iReport生成Word报告 #### 一、前言 本文档旨在详细介绍如何使用Java语言调用iReport工具来生成Word报告的过程。主要内容包括环境搭建、数据库配置、报表设计以及Java代码实现等方面。 #### 二、环境...
在软件开发中,报表生成是一个常见的需求,而iReport是一款广泛使用的开源报表设计工具,它允许开发者创建复杂的报表,并支持多种数据源,包括数据库、XML、JavaBean等。本文将详细讲解如何在iReport中使用JavaBean...
2. **配置数据源**: 在ireport中,可以设置JavaBean数据源,指定JavaBean类名和属性映射。 3. **生成.jasper文件**: 保存并编译.jrxml文件,生成.jasper二进制模板。 4. **Java代码集成**: 在Java项目中,加载....
本知识点主要探讨的是如何在iReport中使用JavaBean作为数据源来填充表格(Table)组件。我们将深入理解这个过程,并结合提供的资源进行详细阐述。 1. **JavaBean数据源的原理** JavaBean是一种符合特定规范的Java...
本实例将详细介绍如何通过自定义JavaBean数据源来生成报表。 首先,理解JavaBean是一种符合特定规范的Java类,它通常具有公共getter和setter方法,用于封装对象的状态。在JasperReport中,JavaBean可以被用作数据源...
【描述分析】:“简单明了利用javabean做数据源,实现ireport报表功能”描述意味着我们将学习一个简洁的方法,通过JavaBean将业务数据传递给iReport,以生成报表。这通常涉及到编写JavaBean类来封装数据,然后在...
本实例将深入探讨如何使用ireport结合javaBean作为数据源来生成报表,帮助初学者快速掌握ireport的使用方法。 【描述】:“一看就会的实例。能够很快上手ireport” ireport因其直观的图形用户界面和强大的报表设计...
本示例将向你展示如何利用iReport将JavaBean作为数据源,以生成定制化的报告。以下是对这个简单示例的详细解析: 1. **JavaBean作为数据源**:JavaBean是一种遵循特定规范的Java类,它封装了数据并提供了访问这些...
在这个过程中,我们将深入探讨如何在`iReport`中使用`JavaBean`作为数据源来开发基于`JasperReports`的报表。 首先,我们需要了解`JavaBean`。`JavaBean`是一种符合特定规范的Java类,通常用于封装数据并提供公共...
這是兩個用java作數據源的例子: 其中 javaBean 為用javaBean作數據源的例子 test 為用自定義數據源的例子 兩個例子都通過測試 想要的朋友可以下載看看! 祝大家玩得開心!
`iReport`是一款开源的Java报表设计工具,它允许开发者创建复杂的报表布局,并能够导出为多种格式,如PDF和DOC(Word)。本文将详细介绍如何使用`iReport`来导出PDF和Word文档。 首先,`iReport`是JasperReports库...
本篇文章将专注于如何在IReport中使用子报表,并结合JavaBean集合作为数据源来生成报告。 首先,理解`子报表`的概念。子报表是报表中的一个区域,它可以独立设计并重复显示主报表中的数据。这样可以将复杂报表拆分...
在一个报表中使用多个数据源的方法,现在分享出来以便后来者少走弯路!网上很多资料说多数据源只能使用子报表方式