java报表EXCEL解决方案.doc_第1页
java报表EXCEL解决方案.doc_第2页
java报表EXCEL解决方案.doc_第3页
java报表EXCEL解决方案.doc_第4页
java报表EXCEL解决方案.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

原创技术高手-参赛文章标题:java报表EXCEL解决方案 评论作者:zhoubikui(dev2dev ID) 摘要:对于程序员特别是从事信息管理编程的程序员来说,报表打印是整个编程过程中最麻烦但又必须做的事情,本文结合自己项目经验对当前报表打印方案做简要分析,并重点讲叙如何利用Java生成Excel表格文件的POI包解决了在Java开发中Excel报表的生成的难题。目录: 开发背景开发思路程序设计如何调用代码总结(目录)一、 开发背景对于程序员特别是从事信息管理编程的程序员来说,报表打印是整个编程过程中最麻烦但又必须做的事情,我们常用的方法就是:1、将数据库记录导出到Excell中;2、用CrystalReport或ActiveReport等报表工具生成报表文件然后再在程序中调用;3、辅助Active打印插件定制格式,直接打印窗体;对于第二种方法网上与CrystalReport或ActiveReport相关的资料很少,而且使用也相当复杂,怎么制作报表全凭程序员自己摸索;对于第三种方法一般是特别行业(即报表格式及数据不许修改)需要的,比如财务报表和政策法规或支付凭证等;对第一种方法对普遍的行业适用,本文今天就重点就介绍了怎样将数据表记录导入到Excell中并怎样控件Excell单元格式以便做出合适的报表。(目录)二、 开发思路其实要开发一个控件只要做两件事,其一是定义各种属性和方法,其二是根据各种属性绘制控件界面。下面我们来分析一下Excell的结构,Excell呈现给我们的是一张二维结构的表格,每一行相当于数据表的一个记录,每一列相当于数据表的字段。但Excell的每个单元又有许多的格式控件单元的呈现方式,这就是Excell与别的表格控件如DataGrid不相同的地方,那么如何实现每个单元都有不同的呈现方式呢?(目录)三、 程序设计基于以上设计思想,我首先设计了一个VO类ExcelIn,它能模仿Excell的结构,其属性为文件生成在服务器的路径名:private String path = null; Excell的每个单元又有许多的格式控件单元的呈现方式,每列的表头:Vector vtrTitle = null; / vector-String每列所占的宽度:int width;数据源,为简单设计用Vector,如果结合数据持久层用IBATIS的话,最好用ListVector vtrData = null; / vector-vector-String。具体实现,使用类Excel,它实现了数据到EXCEL之间的交互主要有两个方法:一个是生成EXCEL文件createExcelFile(ExcelIn excelIn),得到数据源Vector vtrData = excelIn.getData();建一个EXCEL工作簿HSSFWorkbook wb = 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);最后通过循环将数据源一一写到指定的EXCEL表格中最后写到服务器指定位置。(目录)四、 如何调用这个要结合数据库和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);createExcelFile(Vtr);private void createExcelFile(ExcelIn excelIn)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(PM成本预算);vtrTitle.add(期段);excelIn.setTitle(vtrTitle);excelIn.setData(vtr);new Excel().createExcelFile(excelIn);(目录)五、 代码package common;import java.io.*;import java.util.Vector;import org.apache.poi.hssf.usermodel.*;/* Title: * Description: * Copyright: Copyright (c) 2003* Company: MRO* author Kevin zhou* version 1.0*/public class Excel public void createExcelFile(ExcelIn excelIn) throws CommonExceptionVector vtrData = excelIn.getData();HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.createSheet(Sheet1);setColumnWidth(sheet, 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;ivtrTitle.size();i+)HSSFCell cell = rowTitle.createCell(short)i);cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellValue(String)vtrTitle.get(i);cell.setCellStyle(style);for(int i=0;ivtrData.size();i+)HSSFRow row = sheet.createRow(i+1);Vector vtrRow = (Vector)vtrData.get(i);for(int j=0;jvtrRow.size();j+)String strTemp = (String)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 fileFileOutputStream fileOut =new FileOutputStream(excelIn.getPath();wb.write(fileOut);fileOut.close();catch(Exception e)throw new CommonException(文件已经打开,请关闭后再生成);/* Set Column Width*/private void setColumnWidth(HSSFSheet sheet, int width)for(int i=0;iwidth.length;i+)sheet.setColumnWidth(short)i, (short)(widthi*256);package common;import java.util.Vector;/* Title: * Description: * Copyright: Copyright (c) 2003* Company: MRO* 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.vt

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论