一种读取、生成Excel文档的方法及装置与流程

文档序号:12119578阅读:206来源:国知局
本发明涉及数据处理
技术领域
:,特别涉及一种读取、生成Excel文档的方法及装置。
背景技术
::一提到Excel文档,大家脑海中就会浮现出很多表格。作为office系列产品之一,无论是财务人员操作的批量转账交易文件,还是网上银行系统提供给客户下载的财务报表,或者软件中心开发人员使用的代码复查记录单、内部测试案例、功能点估算书,都是Excel文档格式的。由于jxl.jar包不提供读取Excel文件和生成Excel文件的代码实现。这就给广大的JAVA开发人员造成了困难,开发人员都是根据理解来读取Excel文件和生成Excel文件,这样就涉及的代码量很大,开发效率很低,错误率也很高。对于使用JAVA的开发人员而言,如何有效地利用jxl.jar包来读取和生成Excel数据文件是目前急需解决的问题。技术实现要素:本发明实施例的主要目的在于一种读取、生成Excel文档的方法及装置,有效地利用jxl.jar包来读取和生成Excel数据文件,实现读取、生成Excel规范化,降低错误率。为实现上述目的,本发明提供了一种读取Excel文档的方法,包括:获得工作薄;从所述工作薄中获得工作表;从所述工作表中获得单元格;从所述单元格中获得单元格的值和类型;释放资源,完成Excel文档的读取。可选的,在本发明一实施例中,所述获得工作表的方法为通过工作薄的getSheet方法或者工作名称读取。可选的,在本发明一实施例中,所述获得单元格的方法为通过工作表的getCell方法选择单元格。可选的,在本发明一实施例中,所述获得单元格的值的方法为通过单元格的getContents方法把单元格中的信息以字符的形式读取;获得单元格的类型的方法为通过单元格的getType方法返回单元格的类型信息,同时,通过CellType类预设Excel中的类型信息。为实现上述目的,本发明还提供了一种生成Excel文档的方法,包括:创建工作薄;在所述工作薄中创建工作表;在所述工作表中创建单元格,并设置合并单元格的功能;设置所述单元格的样式、字体;写入文件信息至Excel中。可选的,在本发明一实施例中,所述单元格的样式包括:单元格背景、颜色。可选的,在本发明一实施例中,所述设置合并单元格的功能是通过writablesheet.mergeCells(intx,inty,intm,intn)来实现。可选的,在本发明一实施例中,所述创建工作薄的方法包括:直接生成本地文件;或将Excel对象直接写入到输出流中。对应地,为实现上述目的,本发明提供了一种读取Excel文档的装置,包括:工作薄读取单元,用于获得工作薄;工作表读取单元,用于从所述工作薄中获得工作表;单元格读取单元,用于从所述工作表中获得单元格;单元格的内容读取单元,用于从所述单元格中获得单元格的值和类型;读取结束单元,用于释放资源,完成Excel文档的读取。对应地,为实现上述目的,本发明还提供了一种生成Excel文档的装置,包括:工作薄生成单元,用于创建工作薄;工作表生成单元,用于在所述工作薄中创建工作表;单元格生成单元,用于在所述工作表中创建单元格,并设置合并单元格的功能;单元格内容设置单元,用于设置所述单元格的样式、字体;写入内容单元,用于写入文件信息至Excel中。上述技术方案具有如下有益效果:本技术方案利用jxl.jar包提供的API接口,实现了标准化的读取Excel文件和生成Excel文件的方法,普遍适用于软件工程中的各种Excel文件应用,比如:批量转账交易文件、客户财务报表、代码复查记录单、内部测试案例、功能点估算书。对于JAVA开发人员而言,流程简化,代码量大大减少,代替人工方式,工作量大大减少,同时代码的规范化,也使错误率大大降低。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明提出的一种读取Excel文档的方法流程图;图2为本发明提出的一种生成Excel文档的方法流程图;图3为本发明提出的一种读取Excel文档的装置框图;图4为本发明提出的一种生成Excel文档的装置框图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。jxl操作excel包括对象Workbook、Sheet、Cell。一个excel就对应一个Workbook对象,一个Workbook可以有多个Sheet对象,一个Sheet对象可以有多个Cell对象。通过Workbook、Sheet、Cell这三个对象我们就可以实现Excel文件的读取工作。我们先想想一下读取步骤,不管是什么样的Excel操作框架必定都要经历。如图1所示,为本发明提出的一种读取Excel文档的方法流程图。包括:步骤101):获得工作薄;在步骤101中,选取Excel文件得到工作薄Workbook。Workbookworkbook=Workbook.getWorkbook(newFile("myfile.xls"))步骤102):从所述工作薄中获得工作表;在步骤102中,通过Workbook的getSheet方法选择第一个工作表(从0开始)。Sheetsheet=workbook.getSheet(0)另外,也可以通过工作的名称来得到Sheet。步骤103):从所述工作表中获得单元格;在步骤103中,通过Sheet的getCell方法选择位置为C2的单元格(两个参数都从0开始)。Cellc2=sheet.getCell(2,1)步骤104):从所述单元格中获得单元格的值和类型;读取单元格的值,通过Cell的getContents方法,把单元格中的信息以字符的形式读取出来。Stringstringc2=c2.getContents()Cell提供了一个getType方法,能够返回单元格的类型信息,同时JXL提供了一个cellType类用来预设Excel中的类型信息,而且JXL提供了一些Cell类的子类用来分别表示各种类型的单元格,如:LabelCell,NumberCell,DateCell分别表示字符、数值、日期类型的单元格。if(c2.getType()==CellType.LABEL){LabelCellnc=(LabelCell)c2;Stringnumberb2=nc.getString();}if(c2.getType()==CellType.DATE){DateCellnc=(DateCell)c2;Datenumberb2=nc.getDate();}if(c2.getType()==CellType.NUMBER){NumberCellnc=(NumberCell)c2;doublenumberb2=nc.getValue();}步骤105):释放资源,完成Excel文档的读取。当你完成对Excel电子表格数据的处理后,一定要使用close()方法来关闭先前创建的对象,以释放读取数据表的过程中所占用的内存空间,在读取大量数据时尤为重要,最后不要忘记关闭workbook以释放资源:workbook.close()。通过WritableWorkbook,WritableSheet,Label这三个对象我们就可以实现Excel文件的写入工作。我们先想想一下写入,不管是什么样的Excel操作框架必定都要经历。如图2所示,为本发明提出的一种生成Excel文档的方法流程图。包括:步骤201):创建工作薄;API提供了两种方式来处理可写入的输出流,一种是直接生成本地文件,如果文件名不带全路径的话,缺省的文件会定位在当前目录,如果文件名带有全路径的话,则生成的Excel文件则会定位在相应的目录;另外一种是将Excel对象直接写入到输出流,例如:用户通过浏览器来访问Web服务器,如果HTTP头设置正确的话,浏览器自动调用客户端的Excel应用程序,来显示动态生成的Excel电子表格。创建可写入的Excel工作薄:WritableWorkbookwwb=Workbook.createWorkbook(newFile(targetfile));将WritableWorkbook直接写入到输出流:OutputStreamos=newFileOutputStream(targetfile);WritableWorkbookwwb=Workbook.createWorkbook(os)。步骤202):在所述工作薄中创建工作表;WritableSheetws=wwb.createSheet("通讯录",0);//创建sheet步骤203):在所述工作表中创建单元格,并设置合并单元格的功能;添加文本类单元格:LabellabelC=newLabel(0,0,"ThisisaLabelcell");添加带有字型Formatting的对象:WritableFontwf=newWritableFont(WritableFont.TIMES,18,WritableFont.BOLD,true);WritableCellFormatwcfF=newWritableCellFormat(wf);labelCF=newLabel(1,0,"ThisisaLabelCell",wcfF);ws.addCell(labelCF);添加带有字体颜色Formatting的对象:WritableFontwfc=newWritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD,false,UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.RED);WritableCellFormatwcfFC=newWritableCellFormat(wfc);LabellabelCFC=newLabel(1,0,"ThisisaLabelCell",wcfFC);ws.addCell(labelCF);添加Number对象:NumberlabelN=newjxl.write.Number(0,1,3.1415926);ws.addCell(labelN);添加带有formatting的Number对象:NumberFormatnf=newNumberFormat("#.##");WritableCellFormatwcfN=newWritableCellFormat(nf);NumberlabelNF=newNumber(1,1,3.1415926,wcfN);ws.addCell(labelNF);添加Boolean对象:BooleanlabelB=newjxl.write.Boolean(0,2,false);ws.addCell(labelB);添加DateTime对象:DateTimelabelDT=newDateTime(0,3,newjava.util.Date());ws.addCell(labelDT);添加带有formatting的DateFormat对象:DateFormatdf=newDateFormat("ddMMyyyyhh:mm:ss");WritableCellFormatwcfDF=newWritableCellFormat(df);DateTimelabelDTF=newDateTime(1,3,newDate(),wcfDF);ws.addCell(labelDTF);添加公式单元格:Fornualformual=newFormual(0,11,”Sum(A1:A9)”);wrb.addCell(formual);添加图像:WritableImagewrimage=newWritableImage(1,5,10,10,newFile(imageFilepath));wrb.addImage(wrimage);注意,API中注明只支持png文件。在步骤203中,还需要设置合并单元格。通过writablesheet.mergeCells(intx,inty,intm,intn);来实现的。表示将从第x+1列,y+1行到m+1列,n+1行合并(四个点定义了两个坐标,左上角和右下角)结果是合并了m-x+1行,n-y+1列,两者乘积就是合并的单元格数量。sheet.mergeCells(0,6,3,8);label=newLabel(0,6,"合并了12个单元格");sheet.addCell(label)。步骤204):设置所述单元格的样式、字体;对于添加单元格样式,主要是改变单元格背景、字体、颜色等。WritableCellFormatwc=newWritableCellFormat();wc.setAlignment(Alignment.CENTRE);//设置居中wc.setBorder(Border.ALL,BorderLineStyle.THIN);//设置边框线wc.setBackground(jxl.format.Colour.RED);//设置单元格的背景颜色label=newLabel(1,5,"字体",wc);sheet.addCell(label);设置单元格的字体WritableFontwf=newWritableFont(WritableFont.createFont("楷书"),20);WritableCellFormatfont=newWritableCellFormat(wf);label=newLabel(2,6,"楷书",font);sheet.addCell(label);步骤205):写入文件信息至Excel中。wwb.write();//写入数据wwb.close();//关闭文件下面介绍如何使用jxl.jar完成两个日常工作的示例。第一个示例是读取Excel接口文档生成XML格式的接口定义文件。第二个示例示生成Excel格式功能点估算书。一、读取Excel接口文档生成XML文件Excel接口文档定义如下表1:表1使用jxl.jar包读取Excel接口文档生成XML格式的接口定义文件:二、生成Excel格式功能点估算书使用jxl.jar生成Excel格式功能点估算书,Excel接口文档定义如下表2。表2参考代码:由上述实施例可知,本技术方案利用jxl.jar包提供的API接口,实现了标准化的读取Excel文件和生成Excel文件的方法,普遍适用于软件工程中的各种Excel文件应用,对于JAVA开发人员而言,流程简化,代码量大大减少,代替人工方式,工作量大大减少,同时代码的规范化,也使错误率大大降低。如图3所示,为本发明提出的一种读取Excel文档的装置框图。包括:工作薄读取单元301,用于获得工作薄;工作表读取单元302,用于从所述工作薄中获得工作表;单元格读取单元303,用于从所述工作表中获得单元格;单元格的内容读取单元304,用于从所述单元格中获得单元格的值和类型;读取结束单元305,用于释放资源,完成Excel文档的读取。如图4所示,为本发明提出的一种生成Excel文档的装置框图。包括:工作薄生成单元401,用于创建工作薄;工作表生成单元402,用于在所述工作薄中创建工作表;单元格生成单元403,用于在所述工作表中创建单元格,并设置合并单元格的功能;单元格内容设置单元404,用于设置所述单元格的样式、字体;写入内容单元405,用于写入文件信息至Excel中。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一般计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。本领域技术人员还可以了解到本发明实施例列出的各种功能是通过硬件还是软件来实现取决于特定的应用和整个系统的设计要求。本领域技术人员可以对于每种特定的应用,可以使用各种方法实现所述的功能,但这种实现不应被理解为超出本发明实施例保护的范围。以上具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1