ImageVerifierCode 换一换
格式:DOCX , 页数:47 ,大小:172.47KB ,
资源ID:11328956      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11328956.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(POI入门教程.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

POI入门教程.docx

1、POI入门教程内部资料不得拷贝POI报表-用POI与Excel交互AURISOFT第一章 POI简介-JakataPoiHSSF:纯java的Excel解决方案在我们实际的开发中,表现层的解决方案虽然有多样,但是IE浏览器已成为最多人使用的浏览器,因为大家都用Windows。在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统、银行系统)。或者是:我们已经习惯用Excel打印。Apache的Jakata项目的POI子项目,目前比较成熟的是HSSF接口,处理MSExcel对象。它不象我们仅仅是用csv生成的没有格式的可以由Excel转换的东西,而是真正的Exce

2、l对象,你可以控制一些属性如sheet,cell等等。首先,理解一下一个Excel的文件的组织形式,一个Excel文件对应于一个workbook(HSSFWorkbook),一个workbook可以有多个sheet(HSSFSheet)组成,一个sheet是由多个row(HSSFRow)组成,一个row是由多个cell(HSSFCell)组成。POI可以到www.apache.org下载到。实际运行时,需要有poi包就可以了。HSSF提供给用户使用的对象在rg.apache.poi.hssf.usermodel包中,主要部分包括Excel对象,样式和格式,还有辅助操作。有以下几种对象:HSSF

3、Workbook excel的文档对象HSSFSheet excel的表单HSSFRow excel的行 HSSFCell excel的格子单元HSSFFont excel字体HSSFDataFormat 日期格式在poi1.7中才有以下2项:HSSFHeader sheet头HSSFFooter sheet尾(只有打印的时候才能看到效果)和这个样式HSSFCellStyle cell样式辅助操作包括HSSFDateUtil 日期HSSFPrintSetup 打印 HSSFErrorConstants 错误信息表以下可能需要使用到如下的类import org.apache.poi.hssf.u

4、sermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFCellStyle;import org.apache.poi.hssf.usermodel.HSSFDataFormat;import org.apache.poi.hssf.usermodel.HSSFFont;import org.apache.poi.hssf.usermodel.HSSFRow;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSF

5、Workbook;import org.apache.poi.hssf.util.HSSFColor;先看poi的examples包中提供的最简单的例子,建立一个空xls文件。import java.io.FileOutputStream;import java.io.IOException;import org.apache.poi.hssf.usermodel.HSSFWorkbook;public class ExcelSample1 public static void main(String args) throws IOException /创建一个excel文件 HSSFWork

6、book wb= new HSSFWorkbook(); FileOutputStream fileOut= new FileOutputStream(c:workbook.xls);/ FileOutputStream fileOut= new FileOutputStream(c:/workbook.xls); wb.write(fileOut); fileOut.close(); 通过这个例子,我们在c盘下建立的是一个空白的xls文件(不是空文件)。在此基础上,我们可以进一步看其它的例子。import org.apache.poi.hssf.usermodel.*;import java

7、.io.FileOutputStream;import java.io.IOException;public class CreateCellspublic static void main(String args) throws IOExceptionHSSFWorkbook wb = new HSSFWorkbook(); /建立新HSSFWorkbook对象HSSFSheet sheet = wb.createSheet(new sheet); /建立新的sheet对象HSSFRow row = sheet.createRow(short)0);/在sheet里创建一行,参数为行号(第一

8、行,此处可想象成数组)HSSFCell cell = row.createCell(short)0); /在row里建立新cell(单元格),参数为列号(第一列)cell.setCellvalue(1); /设置cell的整数类型的值row.createCell(short)1).setCellvalue(1.2); /设置cell浮点类型的值row.createCell(short)2).setCellvalue(test); /设置cell字符类型的值row.createCell(short)3).setCellvalue(true); /设置cell布尔类型的值 HSSFCellStyl

9、e cellStyle = wb.createCellStyle(); /建立新的cell样式cellStyle.setDataFormat(HSSFDataFormat. getBuiltinFormat(m/d/yy h:mm);/设置cell样式为定制的日期格式HSSFCell dCell =row.createCell(short)4);dCell.setCellvalue(new Date(); /设置cell为日期类型的值dCell.setCellStyle(cellStyle); /设置该cell日期的显示格式HSSFCell csCell =row.createCell(sho

10、rt)5);csCell.setEncoding(HSSFCell.ENCODING_UTF_16);/设置cell编码解决中文高位字节截断csCell.setCellvalue(中文测试_Chinese Words Test); /设置中西文结合字符串row.createCell(short)6).setCellType(HSSFCell.CELL_TYPE_ERROR);/建立错误cellFileOutputStream fileOut = new FileOutputStream(workbook.xls);wb.write(fileOut);fileOut.close();通过这个例子

11、,我们可以清楚的看到xls文件从大到小包括了HSSFWorkbook HSSFSheet HSSFRow HSSFCell这样几个对象。我们可以在cell中设置各种类型的值。 尤其要注意的是如果你想正确的显示非欧美的字符时,尤其象中日韩这样的语言,必须设置编码为16位的即是HSSFCell.ENCODING_UTF_16,才能保证字符的高8位不被截断而引起编码失真形成乱码。 其他测试可以通过参考examples包中的测试例子掌握poi的详细用法,包括字体的设置,cell大小和低纹的设置等。需要注意的是POI是一个仍然在完善中的公开代码的项目,所以有些功能正在不断的扩充。 感觉上面的操作比较的繁

12、琐,然后就自己写了一个方法。这个方法不需要事先创建row和cell,直接进行cteateCell就可以了,在程序中会自动进行判断,如果不存在的话会创建。 private static void cteateCell(HSSFWorkbook wb,HSSFRow row,short col,short align,String val) HSSFCell cell = row.createCell(col); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue(val); HSSFCellStyle cellstyle =

13、 wb.createCellStyle(); cellstyle.setAlignment(align); cell.setCellStyle(cellstyle); 对里面的几个参数的说明:short col 应该是你的cell单元格的位置也就是列号;short align 应该是你的对齐方式;String val 应该是你单元格里面要添加的值;具体的调用如下:HSSFRow row = sheet.createRow(short)1);cteateCell(wb,row,(short)0,HSSFCellStyle.ALIGN_CENTER_SELECTION,SampleID);在上边的

14、例子里我们看到了要设置一个单元格里面信息的格式(例如,要将信息居中)设置的操作如下:HSSFCellStyle cellstyle = wb.createCellStyle();cellstyle.setAlignment(HSSFCellStyle.ALIGN_CENTER_SELECTION);cell.setCellStyle(cellstyle);还有我们我们经常会用到的合并单元格,在这里我们也有这样的操作,代码如下:sheet.addMergedRegion(new Region(1,(short)1,2,(short)4);这里面我们还要介绍一个经常会遇到的问题,就是怎么来冻结一个

15、窗口。poi也为我们集成了这样的事情了。代码如下: sheet.createFreezePane(1,2); 在这里我们需要注意的是一、 该方法是在一个具体的sheet里面来进行操作。二、 方法createFreezepane;有2个参数。前一个参数代表列;后一个参数代表行。上边的代码对应的excel文件如下:我么在画面上看到了明显的两条黑线,这就是冻结的窗口。然后我们来看一个完整的STRUTS的小例子,在这个例子里面我们要做的事情是要模拟移动公司的网上营业厅里面的一个功能,我们要把一个客户当月的通话记录和各种信息查询出来,并且生成一张excel报表。首先,我们来看一下网上效果的截图。然后就是

16、我们具体的代码实现了。struts-config.xml index.jsp 欢迎进入POI-Excel文件报表系统 欢迎进入POI-Excel文件报表系统 a href=/search.do进入查询页面 连接数据库的SQLBean,这个bean和我们之前在分页里面用到的bean是一样的。package bean;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;public class SQLBean String url=j

17、dbc:microsoft:sqlserver:/localhost:1433;DatabaseName=poi_mvc; Connection con=null; Statement sta=null; public SQLBean() try Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver); con=DriverManager.getConnection(url,sa,); sta=con.createStatement(); catch(Exception e) e.printStackTrace(); public

18、 ResultSet select(String selects) throws Exception return sta.executeQuery(selects); 为了体现MVC模式,我们在这里面引入了一个存储数据的Bean。EntityBean.javapackage bean;public class EntityBean private String sjhm; private String hjlx; private String dfhm; private String qssj; private String thsc; private String thdd; privat

19、e String ctlx; private String jbhf; private String chf; private String zhf; private String zjls; public EntityBean(String sjhm,String hjlx,String dfhm,String qssj, String thsc,String thdd,String ctlx,String jbhf, String chf,String zhf) this.sjhm=sjhm; this.hjlx=hjlx; this.dfhm=dfhm; this.qssj=qssj;

20、this.thsc=thsc; this.thdd=thdd; this.ctlx=ctlx; this.jbhf=jbhf; this.chf=chf; this.zhf=zhf; public String getChf() return chf; public void setChf(String chf) this.chf = chf; public String getCtlx() return ctlx; public void setCtlx(String ctlx) this.ctlx = ctlx; public String getDfhm() return dfhm; p

21、ublic void setDfhm(String dfhm) this.dfhm = dfhm; public String getHjlx() return hjlx; public void setHjlx(String hjlx) this.hjlx = hjlx; public String getJbhf() return jbhf; public void setJbhf(String jbhf) this.jbhf = jbhf; public String getQssj() return qssj; public void setQssj(String qssj) this

22、.qssj = qssj; public String getSjhm() return sjhm; public void setSjhm(String sjhm) this.sjhm = sjhm; public String getThdd() return thdd; public void setThdd(String thdd) this.thdd = thdd; public String getThsc() return thsc; public void setThsc(String thsc) this.thsc = thsc; public String getZhf()

23、 return zhf; public void setZhf(String zhf) this.zhf = zhf; public String getZjls() return zjls; public void setZjls(String zjls) this.zjls = zjls; 然后让我们来看看SearchAction,他的主要功能把数据库里的数据提取出来,然后封装到EntityBean里面,在转发到一个新的页面。package action;import java.sql.ResultSet;import java.util.ArrayList;import javax.se

24、rvlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import mons.logging.Log;import mons.logging.LogFactory;import org.apache.struts.action.Action;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMap

25、ping;import bean.EntityBean;import bean.SQLBean;public class SearchAction extends Action public Log log = LogFactory.getLog(Poi_mvc); public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) ArrayList list = new ArrayList(); SQLB

26、ean sq = new SQLBean(); String sql = select * from detial; try ResultSet res = sq.select(sql); while(res.next() String sjhm = res.getString(sjhm); String hjlx = res.getString(hjlx); String dfhm = res.getString(dfhm); String qssj = res.getString(qssj); String thsc = res.getString(thsc); String thdd = res.getString(thdd); String ctlx = res.getString(ctlx); String jbhf = res.getString(jbhf); String chf = res.getString(chf); String zhf = res.getString(zhf); log.info(开始封装数据:手机号码=+sjhm+呼叫类型+hjlx+对方号码+dfhm+起始时间+qssj+通话时间+thsc+通话地点+thdd+长途类型+ctlx+基本话费+jbhf+常话费+chf+总话费+zhf+总纪录+i); EntityBean eb = n

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1