




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
利用Java Excel API操作Excel说明:两套较有影响操作Excel文件的API是jxl和POI,其中jxl功能相对POI较弱一点,但jxl对中文支持较好,一、 读取Excel:1创建WorkbookJava Excel API既可以从本地文件系统的一个文件(.xls),也可以从输入流中读取Excel数据表。读取Excel数据表的第一步是创建Workbook(术语:工作薄),下面的代码片段举例说明了应该如何操作:import java.io.*;import java.jxl.*;.try /构建Workbook对象,只读Workbook对象/File f = new File(sourceFile);直接从本地文件创建Workbook/从输入流创建WorkbookInputStream is = new FileInputStream(sourceFile);Workbook w = Workbook.getWorkbook(is);2.获得工作表(Sheet):Sheet rs = rwb.getSheet(sheetName/下标)我们既可能通过Sheet的名称来访问它,也可以通过下标来访问它。如果通过下标来访问的话,要注意的一点是下标从0开始,就像数组一样。3.获取单元格(Cell)及各种操作:/获取第一行,第一列的值Cell c00 = rs.getCell(0, 0);String strc00 = c00.getContents();/获取第一行,第二列的值Cell c10 = rs.getCell(1, 0);String strc10 = c10.getContents();/获取第二行,第二列的值Cell c11 = rs.getCell(1, 1);String strc11 = c11.getContents();System.out.println(Cell(0, 0) + value : + strc00 + ; type : + c00.getType();System.out.println(Cell(1, 0) + value : + strc10 + ; type : + c10.getType();System.out.println(Cell(1, 1) + value : + strc11 + ; type : + c11.getType();如果仅仅是取得Cell的值,我们可以方便地通过getContents()方法,它可以将任何类型的Cell值都作为一个字符串返回。示例代码中Cell(0, 0)是文本型,Cell(1, 0)是数字型,Cell(1,1)是日期型,通过getContents(),三种类型的返回值都是字符型。如果有需要知道Cell内容的确切类型,API也提供了一系列的方法。参考下面的代码片段:String strc00 = null;double strc10 = 0.00;Date strc11 = null;Cell c00 = rs.getCell(0, 0);Cell c10 = rs.getCell(1, 0);Cell c11 = rs.getCell(1, 1);if(c00.getType() = CellType.LABEL)LabelCell labelc00 = (LabelCell)c00;strc00 = labelc00.getString();if(c10.getType() = CellType.NUMBER)NmberCell numc10 = (NumberCell)c10;strc10 = numc10.getValue();if(c11.getType() = CellType.DATE)DateCell datec11 = (DateCell)c11;strc11 = datec11.getDate();System.out.println(Cell(0, 0) + value : + strc00 + ; type : + c00.getType();System.out.println(Cell(1, 0) + value : + strc10 + ; type : + c10.getType();System.out.println(Cell(1, 1) + value : + strc11 + ; type : + c11.getType();在得到Cell对象后,通过getType()方法可以获得该单元格的类型,然后与API提供的基本类型相匹配,强制转换成相应的类型,最后调用相应的取值方法getXXX(),就可以得到确定类型的值。API提供了以下基本类型,与Excel的数据格式相对应,如下图所示:每种类型的具体意义,请参见Java Excel API Document4.释放资源:wb.close(); is.close();二、 Workbook类提供的一些方法1. int getNumberOfSheets() 获得工作薄(Workbook)中工作表(Sheet)的个数示例:Workbook wb = Workbook.getWorkbook(new File(sourceFile);int sheetNum = wb.getNumberOfSheets();2. Sheet getSheets() 返回工作薄(Workbook)中工作表(Sheet)对象数组,示例:Sheet sheets = wb.getSheets();3. String getVersion()返回正在使用的API版本号:String apiVersion = wb.getVersion();三、 Sheet接口提供的方法1. String getName() 获取Sheet的名称,示例:Workbook wb = Workbook.getWorkbook(new File(sourcefile);Sheet s = wb.getSheet(0);String sheetName = s.getName();2. int getColumns() 获取Sheet表中所包含的总列数,示例:int columns = s.getColumns();3. Cell getColumn(int column) 获取某一列的所有单元格,示例:Cell cell = s.getColunm(column);4 . int getRows() 获取Sheet表中包含的总行数,示例:int rows = s.getRows();5 . Cell getRow(int row) 获取一行的所有单元格,示例:Cell cell = s.getRow(row);6. Cell getCell(int column, int row) 获取指定单元格的对象引用,注意:第一个参数表示列,第二个参数表示行,示例:Cell cell = s.getCell(column, row);四、 生成新的Excel表1. 建立WritableWorkbook,与读取Excel工作表相似,首先要使用Workbook类的工厂方法创建一个可写入的工作薄(WritableWorkbook)对象,这里要注意的是,只能通过API提供的工厂方法来创建WritableWorkbook,而不能使用WritableWorkbook的构造函数,因为类WritableWorkbook是一个抽象类,示例:import java.io.*;import jxl.*;import jxl.write.*; try/构建Workbook对象, 只读Workbook对象/Method 1:创建可写入的Excel工作薄 WritableWorkbook wwb = Workbook.createWorkbook(new File(targetfile);/Method 2:将WritableWorkbook直接写入到输出流/* OutputStream os = new FileOutputStream(targetfile); WritableWorkbook wwb = Workbook.createWorkbook(os);*/catch (Exception e)e.printStackTrace();API提供了两种方式来处理可写入的输出流,一种是直接生成本地文件,如果文件名不带全路径的话,缺省的文件会定位在当前目录,如果文件名带有全路径的话,则生成的Excel文件则会定位在相应的目录;另外一种是将Excel对象直接写入到输出流,例如:用户通过浏览器来访问Web服务器,如果HTTP头设置正确的话,浏览器自动调用客户端的Excel应用程序,来显示动态生成的Excel电子表格2. 创建工作表(Sheet):创建工作表的方法与创建工作薄的方法几乎一样,同样是通过工厂模式方法获得相应的对象,该方法需要两个参数,一个是工作表的名称,另一个是工作表在工作薄中的位置。示例:WritableSheet ws = wwb.createSheet(sheetName,位置);3. 往Sheet中添加内容:/1.添加Label对象jxl.write.Label labelC = new jxl.write.Label(0, 0, This is a Label cell);ws.addCell(labelC);/添加带有字型Formatting的对象jxl.write.WritableFont wf = new jxl.write.WritableFont(WritableFont.TIMES, 18, WritableFont.BOLD, true);jxl.write.WritableCellFormat wcfF = new jxl.write.WritableCellFormat(wf);jxl.write.Label labelCF = new jxl.write.Label(1, 0, This is a Label Cell, wcfF);ws.addCell(labelCF);/添加带有字体颜色Formatting的对象jxl.write.WritableFont wfc = new jxl.write.WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD, false,UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.RED);jxl.write.WritableCellFormat wcfFC = new jxl.write.WritableCellFormat(wfc);jxl.write.Label labelCFC = new jxl.write.Label(1, 0, This is a Label Cell, wcfFC);ws.addCell(labelCF);/2.添加Number对象jxl.write.Number labelN = new jxl.write.Number(0, 1, 3.1415926);ws.addCell(labelN);/添加带有formatting的Number对象jxl.write.NumberFormat nf = new jxl.write.NumberFormat(#.#);jxl.write.WritableCellFormat wcfN = new jxl.write.WritableCellFormat(nf);jxl.write.Number labelNF = new jxl.write.Number(1, 1, 3.1415926, wcfN);ws.addCell(labelNF);/3.添加Boolean对象jxl.write.Boolean labelB = new jxl.write.Boolean(0, 2, false);ws.addCell(labelB);/4.添加DateTime对象jxl.write.DateTime labelDT = new jxl.write.DateTime(0, 3, new java.util.Date();ws.addCell(labelDT);/添加带有formatting的DateFormat对象jxl.write.DateFormat df = new jxl.write.DateFormat(dd MM yyyy hh:mm:ss);jxl.write.WritableCellFormat wcfDF = new jxl.write.WritableCellFormat(df);jxl.write.DateTime labelDTF = new jxl.write.DateTime(1, 3, new java.util.Date(), wcfDF);ws.addCell(labelDTF);/其他:ws. mergeCells(int col1,int row1, int col2, int row2)/合并单元格ws.setColumnView(int col, int width)/设置列宽ws. setRowView(int row, int height)/设置行高writableCellFormat.setOrientation(jxl.format.Orientation.VERTICAL)/文字竖着writableCellFormat.setAlignment(jxl.format.Alignment.CENTRE);/居中这里有两点大家要引起大家的注意。第一点,在构造单元格时,单元格在工作表中的位置就已经确定了。一旦创建后,单元格的位置是不能够变更的,尽管单元格的内容是可以改变的。第二点,单元格的定位是按照下面这样的规律(column, row),而且下标都是从0开始,例如,A1被存储在(0, 0),B1被存储在(1, 0)。4. 关闭连接:wwb.write();/写入Excel工作表(?好像只能调用一次,以后再调用不会写入第一次写入之后想写入的数据)wwb.close();/关闭Excel工作簿对象;这可能与读取Excel文件的操作有少少不同,在关闭Excel对象之前,你必须要先调用write()方法,因为先前的操作都是存储在缓存中的,所以要通过该方法将操作的内容保存在文件中。如果你先关闭了Excel对象,那么只能得到一张空的工作薄了五、 拷贝、更新Excel工作簿主要是下面二步操作,第一步是构造只读的Excel工作薄,第二步是利用已经创建的Excel工作薄创建新的可写入的Excel工作薄/创建只读的Excel工作薄的对象jxl.Workbook rw = jxl.Workbook.getWorkbook(new File(sourcefile);/创建可写入的Excel工作薄对象jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File(targetfile), rw); /读取第一张工作表jxl.write.WritableSheet ws = wwb.getSheet(0);/获得第一个单元格对象jxl.write.WritableCell wc = ws.ge
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 供水考试题及答案
- 点考试题及答案
- 抗震考试题及答案
- 中外名曲赏析知到智慧树答案
- 中西美食鉴赏知到智慧树答案
- 验光员模拟试题+答案
- 中西医结合临床科研思维与方法知到智慧树答案
- 多重耐药菌感染防控知识培训考核试卷(附答案)
- 第四章血液循环阶梯测试题(附答案)
- 2025年公务员特定项目担保合同规范文本
- 陈腐垃圾施工方案
- 渤海大学《软件工程》2022-2023学年第一学期期末试卷
- 税务会计岗位招聘笔试题及解答(某大型国企)2024年
- ICD-10疾病编码完整版
- 消防设备设施操作讲解培训讲课文档
- 内分泌科医疗管理制度
- 临床开展十二项细胞因子检测临床意义
- FlowmasterV7中文技术手册
- 房屋承包出租合同
- 石油化学工业的发展历程与前景
- 《滚珠丝杠螺母副》课件
评论
0/150
提交评论