1、import org.apache.poi.hssf.util.HSSFColor;先看poi的examples包中提供的最简单的例子,建立一个空xls文件。import java.io.FileOutputStream;import java.io.IOException;public class ExcelSample1 public static void main(String args) throws IOException /创建一个excel文件 HSSFWorkbook wb= new HSSFWorkbook(); FileOutputStream fileOut= new
2、FileOutputStream(c:workbook.xls);/ FileOutputStream fileOut= new FileOutputStream(/workbook.xls wb.write(fileOut); fileOut.close(); 通过这个例子,我们在c盘下建立的是一个空白的xls文件(不是空文件)。在此基础上,我们可以进一步看其它的例子。import org.apache.poi.hssf.usermodel.*;public class CreateCellspublic static void main(String args) throws IOExce
3、ptionHSSFWorkbook wb = new HSSFWorkbook(); /建立新HSSFWorkbook对象HSSFSheet sheet = wb.createSheet(new sheet /建立新的sheet对象HSSFRow row = sheet.createRow(short)0);/在sheet里创建一行,参数为行号(第一行,此处可想象成数组)HSSFCell cell = row.createCell(short)0); /在row里建立新cell(单元格),参数为列号(第一列)cell.setCellvalue(1); /设置cell的整数类型的值row.cre
4、ateCell(short)1).setCellvalue(1.2); /设置cell浮点类型的值row.createCell(short)2).setCellvalue(test /设置cell字符类型的值row.createCell(short)3).setCellvalue(true); /设置cell布尔类型的值 HSSFCellStyle cellStyle = wb.createCellStyle(); /建立新的cell样式cellStyle.setDataFormat(HSSFDataFormat. getBuiltinFormat(m/d/yy h:mm);/设置cell样式
5、为定制的日期格式HSSFCell dCell =row.createCell(short)4);dCell.setCellvalue(new Date(); /设置cell为日期类型的值dCell.setCellStyle(cellStyle); /设置该cell日期的显示格式HSSFCell csCell =row.createCell(short)5);csCell.setEncoding(HSSFCell.ENCODING_UTF_16);/设置cell编码解决中文高位字节截断csCell.setCellvalue(中文测试_Chinese Words Test /设置中西文结合字符串r
6、ow.createCell(short)6).setCellType(HSSFCell.CELL_TYPE_ERROR);/建立错误cellFileOutputStream fileOut = new FileOutputStream(workbook.xlswb.write(fileOut);fileOut.close();通过这个例子,我们可以清楚的看到xls文件从大到小包括了HSSFWorkbook HSSFSheet HSSFRow HSSFCell这样几个对象。我们可以在cell中设置各种类型的值。 尤其要注意的是如果你想正确的显示非欧美的字符时,尤其象中日韩这样的语言,必须设置编码
7、为16位的即是HSSFCell.ENCODING_UTF_16,才能保证字符的高8位不被截断而引起编码失真形成乱码。 其他测试可以通过参考examples包中的测试例子掌握poi的详细用法,包括字体的设置,cell大小和低纹的设置等。需要注意的是POI是一个仍然在完善中的公开代码的项目,所以有些功能正在不断的扩充。 感觉上面的操作比较的繁琐,然后就自己写了一个方法。这个方法不需要事先创建row和cell,直接进行cteateCell就可以了,在程序中会自动进行判断,如果不存在的话会创建。 private static void cteateCell(HSSFWorkbook wb,HSSFRo
8、w row,short col,short align,String val) HSSFCell cell = row.createCell(col); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue(val); HSSFCellStyle cellstyle = wb.createCellStyle(); cellstyle.setAlignment(align); cell.setCellStyle(cellstyle);对里面的几个参数的说明:short col 应该是你的cell单元格的位置也就是列号;shor
9、t align 应该是你的对齐方式;String val 应该是你单元格里面要添加的值;具体的调用如下:HSSFRow row = sheet.createRow(short)1);cteateCell(wb,row,(short)0,HSSFCellStyle.ALIGN_CENTER_SELECTION,SampleID在上边的例子里我们看到了要设置一个单元格里面信息的格式(例如,要将信息居中)设置的操作如下:HSSFCellStyle cellstyle = wb.createCellStyle();cellstyle.setAlignment(HSSFCellStyle.ALIGN_C
10、ENTER_SELECTION);cell.setCellStyle(cellstyle);还有我们我们经常会用到的合并单元格,在这里我们也有这样的操作,代码如下:sheet.addMergedRegion(new Region(1,(short)1,2,(short)4);这里面我们还要介绍一个经常会遇到的问题,就是怎么来冻结一个窗口。poi也为我们集成了这样的事情了。代码如下: sheet.createFreezePane(1,2); 在这里我们需要注意的是一、 该方法是在一个具体的sheet里面来进行操作。二、 方法createFreezepane;有2个参数。前一个参数代表列;后一个参
11、数代表行。上边的代码对应的excel文件如下:我么在画面上看到了明显的两条黑线,这就是冻结的窗口。然后我们来看一个完整的STRUTS的小例子,在这个例子里面我们要做的事情是要模拟移动公司的网上营业厅里面的一个功能,我们要把一个客户当月的通话记录和各种信息查询出来,并且生成一张excel报表。首先,我们来看一下网上效果的截图。然后就是我们具体的代码实现了。struts-config.xml!DOCTYPE struts-config PUBLIC -/Apache Software Foundation/DTD Struts Configuration 1.2/EN http:/struts.a
12、pache.org/dtds/struts-config_1_2.dtdstruts-config action path=/search type=action.SearchAction /action/downaction.DownActiondisplay/down.jsp /action-mappingsmessage-resources parameter=ApplicationResources/struts-configindex.jsp% page contentType=text/html; charset=gb2312 language=java%htmlheadtitle
13、欢迎进入POI-Excel文件报表系统/headbodytable align=centertr /tra href=%=request.getContextPath()%/search.do进入查询页面/table/body/html连接数据库的SQLBean,这个bean和我们之前在分页里面用到的bean是一样的。package bean;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;public class SQLBe
14、an String url=jdbc: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.printStackTrac
15、e(); public ResultSet select(String selects) throws Exception return sta.executeQuery(selects);为了体现MVC模式,我们在这里面引入了一个存储数据的Bean。EntityBean.javapublic class EntityBean private String sjhm; private String hjlx; private String dfhm; private String qssj; private String thsc; private String thdd; private S
16、tring 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; thi
17、s.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; publ
18、ic 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.qs
19、sj = 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() re
20、turn 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.util.ArrayList;import javax.servlet.http.HttpServletRequest
21、;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.ActionMapping;import bean.EntityBean;i
22、mport 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(); SQLBean sq = new SQLBean(); String
23、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.getS
24、tring(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 = new EntityBean(sjhm,hjlx,dfhm,qssj,thsc,thdd,ctlx,jbhf,chf,zhf); list.add(eb);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1