1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 打印系列 —— 利用jxl生成Excel

打印系列 —— 利用jxl生成Excel

时间:2022-07-03 00:28:12

相关推荐

打印系列 —— 利用jxl生成Excel

jxl的安装:

主要就是将jxl的包放在WEB-INF的classes下面(如果下载到的是.jar文件,就放在lib下面).别忘了将jxl包中的common文件夹也放在WEB-INF下面.

jxl的使用:

主要的功能就是读Excel文件和写Excel文件

读:

读的时候是这样的一个思路,先用一个输入流(InputStream)得到Excel文件,然后用jxl中的Workbook得到工作薄,用Sheet从工作薄中得到工作表,用Cell得到工作表中得某个单元格.

InputStream->Workbook->Sheet->Cell,就得到了excel文件中的单元格

代码:

<%@pagecontentType="text/html;charset=gb2312"%><%@pageimport="java.io.*,jxl.*,jxl.write.*,jxl.write.*,jxl.format.*"%>Stringpath="c://excel.xls";//Excel文件URLInputStreamis=newFileInputStream(path);//写入到FileInputStreamjxl.Workbookwb=Workbook.getWorkbook(is);//得到工作薄jxl.Sheetst=wb.getSheet(0);//得到工作薄中的第一个工作表Cellcell=st.getCell(0,0);//得到工作表的第一个单元格,即A1Stringcontent=cell.getContents();//getContents()将Cell中的字符转为字符串wb.close();//关闭工作薄is.close();//关闭输入流 还可以通过Sheet的getRows(),getColumns()方法得到行数列数,并用于循环控制,输出一个sheet中的所有内容.

我们可以通过Sheet的getCell(x,y)方法得到任意一个单元格,x,y和excel中的坐标对应.

例如A1对应(0,0),A2对应(0,1),D3对应(3,2).Excel中坐标从A,1开始,jxl中全部是从0开始.

写:

往Excel中写入内容主要是用jxl.write包中的类.

思路是这样的:

OutputStream<-WritableWorkbook<-WritableSheet<-Label

这里面Label代表的是写入Sheet的Cell位置及内容.

代码:

<%@pagecontentType="text/html;charset=gb2312"%><%@pageimport="java.io.*,jxl.*,jxl.write.*,jxl.write.*,jxl.format.*"%>OutputStreamos=newFileOutputStream("c://test.xls");//输出的Excel文件URLWritableWorkbookwwb=Workbook.createWorkbook(os);//创建可写工作薄WritableSheetws=wwb.createSheet("sheet1",0);//创建可写工作表LabellabelCF=newLabel(0,0,"hello");//创建写入位置和内容ws.addCell(labelCF);//将Label写入sheet中//Label的构造函数Label(intx,inty,StringaString)xy意同读的时候的xy,aString是写入的内容.WritableFontwf=newWritableFont(WritableFont.TIMES,12,WritableFont.BOLD,false);//设置写入字体WritableCellFormatwcfF=newWritableCellFormat(wf);//设置CellFormatLabellabelCF=newLabel(0,0,"hello");//创建写入位置,内容和格式

Label的另一构造函数Label(int c, int r, String cont, CellFormat st)可以对写入内容进行格式化,设置字体及其它的属性.

现在可以写了

wwb.write();

写完后关闭

wwb.close();

输出流也关闭吧

os.close;

OK,只要把读和写结合起来,就可以在N个Excel中读取数据写入你希望的Excel新表中,还是比较方便的.

下面是一个比较完整的JXL生成Excel的例子:

代码如下:

test.jsp

<%@tagliburi="/WEB-INF/struts-html.tld"prefix="html"%><html:html><html:buttonproperty="button"οnclick="printAll()">DownLoad</html:button></html:html><scriptlanguage='javascript'>functionprintAll(){location.href="<%=request.getContextPath()%>/download.do";}</script>

DownloadAction.java

importorg.apache.struts.action.*;importjavax.servlet.http.*;importjava.io.OutputStream;importtest.whw.upload.ExcelBean;publicclassDownloadActionextendsAction{publicActionForwardexecute(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{try{Stringfname="test";//Excel文件名OutputStreamos=response.getOutputStream();//取得输出流response.reset();//清空输出流response.setHeader("Content-disposition","attachment;filename="+fname+".xls"); //设定输出文件头response.setContentType("application/msexcel");//定义输出类型ExcelBeaneb=newExcelBean();eb.expordExcel(os);//调用生成excel文件bean}catch(Exceptione){System.out.println(e);}returnmapping.findForward("display");}}

ExcelBean.java

packagetest.whw.upload;importjava.io.*;importjxl.*;importjxl.write.*;importjxl.format.*;importjava.util.*;importjava.awt.Color;publicclassExcelBean{publicExcelBean(){}publicStringexpordExcel(OutputStreamos)throwsException{jxl.write.WritableWorkbookwbook=Workbook.createWorkbook(os);//建立excel文件Stringtmptitle="测试文件";//标题jxl.write.WritableSheetwsheet=wbook.createSheet("第一页",0);//sheet名称//设置excel标题jxl.write.WritableFontwfont=newjxl.write.WritableFont(WritableFont.ARIAL,16,WritableFont.BOLD,false,jxl.format.UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.BLACK);jxl.write.WritableCellFormatwcfFC=newjxl.write.WritableCellFormat(wfont);jxl.write.Labelwlabel1;wlabel1=newjxl.write.Label(5,0,tmptitle,wcfFC);wsheet.addCell(wlabel1);wfont=newjxl.write.WritableFont(WritableFont.ARIAL,14,WritableFont.BOLD,false,jxl.format.UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.BLACK);wcfFC=newjxl.write.WritableCellFormat(wfont);jxl.write.Labelwlabel;wlabel=newjxl.write.Label(0,0,"写入内容");wsheet.addCell(wlabel);////合并单元格mergeCells(行,列,行,列);wsheet.mergeCells(3,1,5,1);wbook.write();//写入文件wbook.close();os.close();return"success";}}

struts-config.xml

<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEstruts-configPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration1.1//EN""/struts/dtds/struts-config_1_1.dtd"><struts-config><action-mappings><actiontype="test.whw.upload.DownloadAction"path="/download"><forwardname="display"path="/display.jsp"/></action></action-mappings></struts-config><!--display.jsp是成功的提示页面-->

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。