已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java excel API 说明手册说明手册 作者 Rubber 整理 calf 使用 Windows 操作系统的朋友对 Excel 电子表格 一定不会陌生 但是要使用 Java 语言来操纵 Excel 文件并不是一件容易的事 在 Web 应用日益盛行的今天 通过 Web 来操作 Excel 文件的需求越来 越强烈 目前较为流行的操作是在 JSP 或 Servlet 中创建一个 CSV comma separated values 文件 并将这个文件以 MIME text csv 类型返回给浏览器 接着浏览器调用 Excel 并且显示 CSV 文件 这样只 是说可以访问到 Excel 文件 但是还不能真正的操纵 Excel 文件 本文将给大家一个惊喜 向大家介绍一 个开放源码项目 Java Excel API 使用它大家就可以方便地操纵 Excel 文件了 JAVA EXCEL API 简介简介 Java Excel 是一开放源码项目 通过它 Java 开发人员可以读取 Excel 文件的内容 创建新的 Excel 文件 更新已经存在的 Excel 文件 使用该 API 非 Windows 操作系统也可以通过纯 Java 应用来处理 Excel 数据表 因为是使用 Java 编写的 所以我们在 Web 应用中可以通过 JSP Servlet 来调用 API 实 现对 Excel 数据表的访问 现在发布的稳定版本是 V2 0 提供以下功能 从 Excel 95 97 2000 等格式的文件中读取数据 读取 Excel 公式 可以读取 Excel 97 以后的公式 生成 Excel 数据表 格式为 Excel 97 支持字体 数字 日期的格式化 支持单元格的阴影操作 以及颜色操作 修改已经存在的数据表 现在还不支持以下功能 但不久就会提供了 1 不能够读取图表信息 2 可以读 但是不能生成公式 任何类型公式最后的计算值都可以读出 应用示例应用示例 1 从从 Excel 文件读取数据表文件读取数据表 Java Excel API 既可以从本地文件系统的一个文件 xls 也可以从输入流中读取 Excel 数据表 读 取 Excel 数据表的第一步是创建 Workbook 术语 工作薄 下面的代码片段举例说明了应该如何操作 完整代码见 ExcelReading java import java io import jxl try 构建 Workbook 对象 只读 Workbook 对象 直接从本地文件创建 Workbook 从输入流创建 Workbook InputStream is new FileInputStream sourcefile jxl Workbook rwb Workbook getWorkbook is catch Exception e e printStackTrace 一旦创建了 Workbook 我们就可以通过它来访问 Excel Sheet 术语 工作表 参考下面的代码片段 获取第一张 Sheet 表 Sheet rs rwb getSheet 0 我们既可能通过 Sheet 的名称来访问它 也可以通过下标来访问它 如果通过下标来访问的话 要 注意的一点是下标从 0 开始 就像数组一样 一旦得到了 Sheet 我们就可以通过它来访问 Excel 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 Document 当你完成对 Excel 电子表格数据的处理后 一定要使用 close 方法来关闭先前创建的对象 以释放 读取数据表的过程中所占用的内存空间 在读取大量数据时显得尤为重要 参考如下代码片段 操作完成时 关闭对象 释放占用的内存空间 rwb close Java Excel API 提供了许多访问 Excel 数据表的方法 在这里我只简要地介绍几个常用的方法 其 它的方法请参考附录中的 Java Excel API Document Workbook 类提供的方法类提供的方法 1 int getNumberOfSheets 获得工作薄 Workbook 中工作表 Sheet 的个数 示例 jxl Workbook rwb jxl Workbook getWorkbook new File sourcefile int sheets rwb getNumberOfSheets 2 Sheet getSheets 返回工作薄 Workbook 中工作表 Sheet 对象数组 示例 jxl Workbook rwb jxl Workbook getWorkbook new File sourcefile Sheet sheets rwb getSheets 3 String getVersion 返回正在使用的 API 的版本号 好像是没什么太大的作用 jxl Workbook rwb jxl Workbook getWorkbook new File sourcefile String apiVersion rwb getVersion Sheet 接口提供的方法接口提供的方法 1 String getName 获取 Sheet 的名称 示例 jxl Workbook rwb jxl Workbook getWorkbook new File sourcefile jxl Sheet rs rwb getSheet 0 String sheetName rs getName 2 int getColumns 获取 Sheet 表中所包含的总列数 示例 jxl Workbook rwb jxl Workbook getWorkbook new File sourcefile jxl Sheet rs rwb getSheet 0 int rsColumns rs getColumns 3 Cell getColumn int column 获取某一列的所有单元格 返回的是单元格对象数组 示例 jxl Workbook rwb jxl Workbook getWorkbook new File sourcefile jxl Sheet rs rwb getSheet 0 Cell cell rs getColumn 0 4 int getRows 获取 Sheet 表中所包含的总行数 示例 jxl Workbook rwb jxl Workbook getWorkbook new File sourcefile jxl Sheet rs rwb getSheet 0 int rsRows rs getRows 5 Cell getRow int row 获取某一行的所有单元格 返回的是单元格对象数组 示例子 jxl Workbook rwb jxl Workbook getWorkbook new File sourcefile jxl Sheet rs rwb getSheet 0 Cell cell rs getRow 0 6 Cell getCell int column int row 获取指定单元格的对象引用 需要注意的是它的两个参数 第一个是列数 第二个是行数 这与通 常的行 列组合有些不同 jxl Workbook rwb jxl Workbook getWorkbook new File sourcefile jxl Sheet rs rwb getSheet 0 Cell cell rs getCell 0 0 2 生成新的生成新的 Excel 工作薄工作薄 下面的代码主要是向大家介绍如何生成简单的 Excel 工作表 在这里单元格的内容是不带任何修饰 的 如 字体 颜色等等 所有的内容都作为字符串写入 完整代码见 ExcelWriting java 与读取 Excel 工作表相似 首先要使用 Workbook 类的工厂方法创建一个可写入的工作薄 Workbook 对 象 这里要注意的是 只能通过 API 提供的工厂方法来创建 Workbook 而不能使用 WritableWorkbook 的构造函数 因为类 WritableWorkbook 的构造函数为 protected 类型 示例代码片段如下 import java io import jxl import jxl write try 构建 Workbook 对象 只读 Workbook 对象 Method 1 创建可写入的 Excel 工作薄 jxl write WritableWorkbook wwb Workbook createWorkbook new File targetfile Method 2 将 WritableWorkbook 直接写入到输出流 OutputStream os new FileOutputStream targetfile jxl write WritableWorkbook wwb Workbook createWorkbook os catch Exception e e printStackTrace API 提供了两种方式来处理可写入的输出流 一种是直接生成本地文件 如果文件名不带全路径的 话 缺省的文件会定位在当前目录 如果文件名带有全路径的话 则生成的 Excel 文件则会定位在相应的 目录 另外一种是将 Excel 对象直接写入到输出流 例如 用户通过浏览器来访问 Web 服务器 如果 HTTP 头设置正确的话 浏览器自动调用客户端的 Excel 应用程序 来显示动态生成的 Excel 电子表格 接下来就是要创建工作表 创建工作表的方法与创建工作薄的方法几乎一样 同样是通过工厂模式 方法获得相应的对象 该方法需要两个参数 一个是工作表的名称 另一个是工作表在工作薄中的位置 参考下面的代码片段 创建 Excel 工作表 jxl write WritableSheet ws wwb createSheet Test Sheet 1 0 这锅也支好了 材料也准备齐全了 可以开始下锅了 现在要做的只是实例化 API 所提供的 Excel 基 本数据类型 并将它们添加到工作表中就可以了 参考下面的代码片段 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 这里有两点大家要引起大家的注意 第一点 在构造单元格时 单元格在工作表中的位置就已经确 定了 一旦创建后 单元格的位置是不能够变更的 尽管单元格的内容是可以改变的 第二点 单元格的 定位是按照下面这样的规律 column row 而且下标都是从 0 开始 例如 A1 被存储在 0 0 B1 被存 储在 1 0 最后 不要忘记关闭打开的 Excel 工作薄对象 以释放占用的内存 参见下面的代码片段 写入 Exel 工作表 wwb write 关闭 Excel 工作薄对象 wwb close 这可能与读取 Excel 文件的操作有少少不同 在关闭 Excel 对象之前 你必须要先调用 write 方法 因为先前的操作都是存储在缓存中的 所以要通过该方法将操作的内容保存在文件中 如果你先关闭了 Excel 对象 那么只能得到一张空的工作薄了 3 拷贝 更新拷贝 更新 Excel 工作薄工作薄 接下来简要介绍一下如何更新一个已经存在的工作薄 主要是下面二步操作 第一步是构造只读的 Excel 工作薄 第二步是利用已经创建的 Excel 工作薄创建新的可写入的 Excel 工作薄 参考下面的代码 片段 完整代码见 ExcelModifying java 创建只读的 Excel 工作薄的对象 jxl Workbook rw jxl Workbook getWorkbook new File sourcefile 创建可写入的 Excel 工作薄对象 jxl write WritableWorkbook ww
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 宝马3系产品介绍
- 急诊绿色通道介绍
- 儿童健康体检宣教
- 介绍酒店各个部门
- 瑞金职业学院介绍
- 股骨颈骨折护理科普
- 教育成果汇报
- 商场客诉处理方法
- 颐和先锋书店介绍
- 文书模板-节假日公车封存情况的说明报告
- 2024-2025学年广东省广州六中八年级上学期期中语文试卷(含答案)
- 法院网络安全责任制
- 九九重阳+爱老敬老+课件-2025-2026学年上学期主题班会
- 2025年政府驻外招商笔试答题技巧
- 自考《现代设计史》(05424)考试复习题库(汇总版)
- “农药水悬浮剂加工及贮藏中的常见问题及其对策”课件
- 铁路下穿高速公路安全评价报告
- 农民工工资舆情应对培训交底资料
- 楼宇自控系统报价清单
- Q∕GDW 11421-2020 电能表外置断路器技术规范
- 商旅服务方案(详细版)
评论
0/150
提交评论