版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、原创技术高手-参赛文章标题:java报表EXCEL解决方案 评论作者:zhoubikui(dev2dev ID) 摘要:对于程序员特别是从事信息管理编程的程序员来说,报表打印是整个编程过程中最麻烦但又必须做的事情,本文结合自己项目经验对当前报表打印方案做简要分析,并重点讲叙如何利用Java生成Excel表格文件的POI包解决了在Java开发中Excel报表的生成的难题。目录: 开发背景开发思路程序设计如何调用代码总结(目录)一、 开发背景对于程序员特别是从事信息管理编程的程序员来说,报表打印是整个编程过程中最麻烦但又必须做的事情,我们常用的方法就是:1、将数据库记录导出到Excell中;2、用
2、CrystalReport或ActiveReport等报表工具生成报表文件然后再在程序中调用;3、辅助Active打印插件定制格式,直接打印窗体;对于第二种方法网上与CrystalReport或ActiveReport相关的资料很少,而且使用也相当复杂,怎么制作报表全凭程序员自己摸索;对于第三种方法一般是特别行业(即报表格式及数据不许修改)需要的,比如财务报表和政策法规或支付凭证等;对第一种方法对普遍的行业适用,本文今天就重点就介绍了怎样将数据表记录导入到Excell中并怎样控件Excell单元格式以便做出合适的报表。(目录)二、 开发思路其实要开发一个控件只要做两件事,其一是定义各种属性和方
3、法,其二是根据各种属性绘制控件界面。下面我们来分析一下Excell的结构,Excell呈现给我们的是一张二维结构的表格,每一行相当于数据表的一个记录,每一列相当于数据表的字段。但Excell的每个单元又有许多的格式控件单元的呈现方式,这就是Excell与别的表格控件如DataGrid不相同的地方,那么如何实现每个单元都有不同的呈现方式呢?(目录)三、 程序设计基于以上设计思想,我首先设计了一个VO类ExcelIn,它能模仿Excell的结构,其属性为文件生成在服务器的路径名:private String path = null; Excell的每个单元又有许多的格式控件单元的呈现方式,每列的表
4、头:Vector vtrTitle = null; / vector->String每列所占的宽度:int width;数据源,为简单设计用Vector,如果结合数据持久层用IBATIS的话,最好用ListVector vtrData = null; / vector->vector->String。具体实现,使用类Excel,它实现了数据到EXCEL之间的交互主要有两个方法:一个是生成EXCEL文件createExcel excelIn),得到数据源Vector vtrData = excelIn.getData();建一个EXCEL工作簿HSSFWorkbook wb =
5、 new HSSFWorkbook();建一个EXCEL工作表 HSSFSheet sheet = wb.createSheet("Sheet1");设置EXCEL列宽setColumnWidth(sheet, excelIn.getWidth();设置EXCEL字体格式及其它设置HSSFFont font = wb.createFont();font.setFontName("宋体");HSSFCellStyle style = wb.createCellStyle();style.setFont(font);最后通过循环将数据源一一写到指定的EXCE
6、L表格中最后写到服务器指定位置。(目录)四、 如何调用这个要结合数据库和WEB应用来说,最好让数据库返回的值刚好是EXCEL的值类型,具体调试文件见下面:public TestExcel()public static viod main(String args)TestExcel test=new TestExcel();Test.test();public void test()ExcelIn excelIn=new ExcelIn();ExcelIn.setPath(“./”);Vtr.add(2004-10);createExcel);private void createExcel e
7、xcelIn)Vector vtr= excelIn. getData();excelIn.setPath(this.excelPath);int width = 10, 22, 22, 22, 22, 12;excelIn.setWidth(width);Vector vtrTitle = new Vector();vtrTitle.add("年月");vtrTitle.add("PM工作量");vtrTitle.add("PM成本预算");vtrTitle.add("CM工作量");vtrTitle.add(&
8、quot;PM成本预算");vtrTitle.add("期段");excelIn.setTitle(vtrTitle);excelIn.setData(vtr);new Excel().createExcel);(目录)五、 代码package common;import java.io.*;import java.util.Vector;imporermodel.*;/* <p>Title: </p>* <p>Description: </p>* <p>Copyright: Copyright (c)
9、2003</p>* <p>Company: MRO</p>* author Kevin zhou* version 1.0*/public class Excel public void createExcel excelIn) throws CommonExceptionVector vtrData = excelIn.getData();HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.createSheet("Sheet1");setColumnWidth(sheet
10、, excelIn.getWidth();HSSFFont font = wb.createFont();font.setFontName("宋体");HSSFCellStyle style = wb.createCellStyle();style.setFont(font);if(vtrData != null)Vector vtrTitle = excelIn.getTitle();HSSFRow rowTitle = sheet.createRow(0);for(int i=0;i<vtrTitle.size();i+)HSSFCell cell = rowTi
11、tle.createCell(short)i);cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellValue(String)vtrTitle.get(i);cell.setCellStyle(style);for(int i=0;i<vtrData.size();i+)HSSFRow row = sheet.createRow(i+1);Vector vtrRow = (Vector)vtrData.get(i);for(int j=0;j<vtrRow.size();j+)String strTemp = (String
12、)vtrRow.get(j);if(" ".equals(strTemp)strTemp = " "HSSFCell cell = row.createCell(short)j);cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellValue(strTemp);cell.setCellStyle(style);try/ Write the output to a =new (excelIn.getPath();wb.write();();catch(Exception e)thr
13、ow new CommonException("文件已经打开,请关闭后再生成");/* Set Column Width*/private void setColumnWidth(HSSFSheet sheet, int width)for(int i=0;i<width.length;i+)sheet.setColumnWidth(short)i, (short)(widthi*256);package common;import java.util.Vector;/* <p>Title: </p>* <p>Description
14、: </p>* <p>Copyright: Copyright (c) 2003</p>* <p>Company: MRO</p>* author Kouken* version 1.0*/public class ExcelIn private String path = null;Vector vtrData = null; / vector->vector->StringVector vtrTitle = null; / vector->Stringint width;public String getPath()return this.path;public void setPath(String path)this.path = path;public Vector getData()return this.vtrData;public void setData(Vector vtrData)this.vtrData = vtrData;public Vector getTitle()return this.vtrTitle;public void setTitle(Vector vtrTitle)this.vtrTi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026北京智芯微电子科技有限公司高校毕业生招聘约30人(第二批)考试参考题库及答案解析
- 2026中国联通社会招聘6人笔试备考试题及答案解析
- 2026四川成都市武侯区簇锦社区卫生服务中心社会招聘编外专业技术人员3人考试备考题库及答案解析
- 2026福建泉州晋江市新塘街道第二中心幼儿园招聘后勤人员4人笔试备考试题及答案解析
- 未来五年新形势下个人卫生用针织品百货行业顺势崛起战略制定与实施分析研究报告
- 未来五年保暖内衣行业市场营销创新战略制定与实施分析研究报告
- 未来五年毛细管柱行业市场营销创新战略制定与实施分析研究报告
- 未来五年新形势下理血针剂行业顺势崛起战略制定与实施分析研究报告
- 2026广西北海市第十二中学教师招聘4人考试备考题库及答案解析
- 2026黑龙江哈尔滨工业大学能源科学与工程学院航空航天热物理研究所招聘考试备考题库及答案解析
- 翻译与文化传播
- Photoshop平面设计与制作(第3版)中职全套教学课件
- 智慧机场解决方案
- 新版煤矿机电运输培训课件
- 人教版四年级上册竖式计算200题及答案
- 2024年北京科技职业学院高职单招(英语/数学/语文)笔试历年参考题库含答案解析
- 2016-2023年江苏城市职业学院高职单招(英语/数学/语文)笔试历年参考题库含答案解析
- TCWAN 0100-2023 焊接数值模拟固有应变法
- 汽修春节安全生产培训 修车维护安全驾驶
- ERAS标准病房评审标准表
- 宫腔镜手术知情同意书
评论
0/150
提交评论