JXL中文开发文档

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.3.3.6添加 Boolean 对象
Boolean labelB = new jxl.write.Boolean(0, 2, false); ws.addCell(labelB);
2.3.3.7添加 DateTime 对象
DateTime labelDT = new DateTime(0, 3, new java.util.Date()); ws.addCell(labelDT);
2.2.3.1 读取单元格的值
2.2.3.2通过 Cell 的 getContents 方法
把单元格中的信息以字符的形式读取出来 String stringc2 = c2.getContents();
2.2.3.3Cell 提供了一个 getType 方法
能够返回单元格的类型信息,同时 JXL 提供了一个 CellType 类用来预设 Excel 中的类型信息,而且 JXL 提供了一些 Cell 类的子类用来分别用来表示各种类 型的单元格,如 LabelCell,NumberCell,DateCell 分别表示字符、数值、日 期类型的单元格 if (c2.getType() == CellType. LABEL) {
1.3.2 Poi 优缺点
Jakarta 的 POI Project 与 Java Excel API 在开源世界中可以说是并驾齐驱,但是也各有 优劣,poi 在某些细节有些小 Bug 并且不支持写入图片(poi 其实可以写入图片,不过没 有 jxl 来的方便,比较麻烦),其他方面都挺不错的;而 JXL 提供了对图片的支持(但是 仅仅支持 png 格式的图片),问题就是对公式支持不是很好,但还是提供了简单的公式 读取支持。因此你的项目中要选用什么样的第三方插件为完全由你的应用来决定。如果 你的软件是跟财务有相当的关系的话,建议采用 POI Project,就我所在目前的项目来说
通过 Workbook,Sheet ,Cell 这三个对象我们就可以实现 Excel 文件的读取工作。 我们先想想一下读取步骤,不管是什么样的 Excel 操作框架必定都要经历
1、 选取 Excel 文件得到工作薄 2、 选择工作表 3、 选择 Cell 4、 读取信息
2.2.1 读取工作薄
选取 Excel 文件得到工作薄 Workbook Workbook workbook = Workbook.getWorkbook(new File("myfile.xls"));
2.3.2 创建工作表
WritableSheet ws = wwb.createSheet("通讯录", 0);//创建 sheet
2.3.3 创建单元格
2.3.3.1 添加文本类单元格
Label labelC = new Label(0, 0, "This is a Label cell");
2.3.3.2添加带有字型 FormattiBiblioteka Baidug 的对象
if (c2.getType() == CellType.NUMBER) {
NumberCell nc = (NumberCell) c2; double number b2 = nc.getValue(); } API 提供了以下基本类型,与 Excel 的数据格式相对应,如下图所示
2.2.4 以释放资源:workbook.close()
Excel 开发文档
1 开发调研
1.1 需求描述
MS 的电子表格(Excel)是 Office 的重要成员,是保存统计数据的一种常用格式。 作为办公文档,势必要涉及到的电子文档的交换,Excel 是一种在企业中非常通用的文件格 式,打印和管理也比较方便。在一个 Java 应用中,将一部分数据生成 Excel 格式,是与其他 系统无缝连接的重要手段。
WritableFont wf = new WritableFont(WritableFont.TIMES, 18, WritableFont.BOLD, true);
WritableCellFormat wcfF = new WritableCellFormat(wf); labelCF = new Label(1, 0, "This is a Label Cell", wcfF); ws.addCell(labelCF);
2.3.1.1创建可写入的 Excel 工作薄
WritableWorkbook wwb = Workbook.createWorkbook(new File(targetfile));
2.3.1.2将 WritableWorkbook 直接写入到输出流
OutputStream os = new FileOutputStream(targetfile); WritableWorkbook wwb = Workbook.createWorkbook(os);
Jxl 总耗时 2250 ms 9750 ms 37453ms
1.4.3 写 excel 速度效率
jxl 插入数据比 poi 速度要快
1.4.4 功能对比
相比提供的功能的话,JXL 相对弱了点.所以如果要实现的功能比较复杂的情 况下可以考虑使用 POI,但如果只想生成一些大数据量可以考虑使用 JXL,或者 CSV 也是 一个不错的选择,不过 CSV 并不是真正的 excel,然而 jxl 插入数据比 poi 速度要快。
2 Jxl 开发指南
2.1 介绍
jxl 操作 excel 包括对象 Workbook,Sheet ,Cell。
一个 excel 就对应一个 Workbook 对象, 一个 Workbook 可以有多个 Sheet 对象 一个 Sheet 对象可以有多个 Cell 对象
2.2 读取 excel 操作
1.2 Excel 开发常用开源工具
在开源世界中,有两套比较有影响的 API 可供使用,一个是 POI,一个是 jExcelAPI。
1.3 比较开源工具的优缺点
1.3.1 Jxl 优缺点
Jxl 特征有如下描述: ● 支持 Excel 95-2000 的所有版本 ● 生成 Excel 2000 标准格式 ● 支持字体、数字、日期操作 ● 能够修饰单元格属性 ● 支持图像和图表 应该说以上功能已经能够大致满足我们的需要。最关键的是这套 API 是纯 Java 的, 并不依赖 Windows 系统,即使运行在 Linux 下,它同样能够正确的处理 Excel 文件。另 外需要说明的是,这套 API 对图形和图表的支持很有限,而且仅仅识别 PNG 格式。
2.3.3.3添加带有字体颜色 Formatting 的对象
WritableFont wfc = new WritableFont(WritableFont.ARIAL,10,WritableFont.NO _BOLD, false,
UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.RED); WritableCellFormat wcfFC = new WritableCellFormat(wfc); Label labelCFC = new Label(1, 0, "This is a Label Cell", wcfFC); ws.addCell(labelCF);
1、 创建 Exce 工作薄 2、 创建工作表 3、 创建单元格
2.3.1 创建工作薄
API 提供了两种方式来处理可写入的输出流,一种是直接生成本地文件,如果 文件名不带全路径的话,缺省的文件会定位在当前目录,如果文件名带有全路 径的话,则生成的 Excel 文件则会定位在相应的目录;另外一种是将 Excel 对象直接写入到输出流,例如:用户通过浏览器来访问 Web 服务器,如果 HTTP 头设置正确的话,浏览器自动调用客户端的 Excel 应用程序,来显示动态生成 的 Excel 电子表格。
由于用不到计算公式,而且很可能需要导出图片,因此,我的选择是 JXL 。
1.4 性能比较以及最终选择
1.4.1 内存消耗:(来自网络)
谈下 JVM 虚拟机内存消耗的情况. 数据量 3000 条数据,每条 60 列.JVM 虚拟机内存大小 64M. 使用 POI:运行到 2800 条左右就报内存溢出. 使用 JXL:3000 条全部出来,并且内存还有 21M 的空间. 可想而知,在对内存的消耗方面差距还是挺大的. 也许是由于 JXL 在对资源回收利用方面做的还挺不错的。
2.3.3.8添加带有 formatting 的 DateFormat 对象
DateFormat df = new DateFormat("dd MM yyyy hh:mm:ss"); WritableCellFormat wcfDF = new WritableCellFormat(df); DateTime labelDTF = new DateTime(1, 3, new Date(), wcfDF); ws.addCell(labelDTF);
2.3.3.4添加 Number 对象
Number labelN = new jxl.write.Number(0, 1, 3.1415926); ws.addCell(labelN);
2.3.3.5添加带有 formatting 的 Number 对象
NumberFormat nf = new NumberFormat("#.##"); WritableCellFormat wcfN = new WritableCellFormat(nf); Number labelNF = new Number(1, 1, 3.1415926, wcfN); ws.addCell(labelNF);
LabelCell nc = (LabelCell) c2; String number b2 = nc. getString(); } if (c2.getType() == CellType. DATE) { DateCell nc = (DateCell) c2; Date number b2 = nc. getDate(); }
wrb.addImage(wrimage);
注意,API 中注明只支持 png 文件。
2.3.4 合并单元格
当你完成对 Excel 电子表格数据的处理后,一定要使用 close()方法来关闭先前创建 的对象,以释放读取数据表的过程中所占用的内存空间,在读取大量数据时显得尤 为重要 最后不要忘记关闭 workbook 以释放资源:workbook.close();
2.3 写 excel 操作
通过 WritableWorkbook,WritableSheet,Label 这三个对象我们就可以实现 Excel 文件的插入工作。我们先想想一下插入,不管是什么样的 Excel 操作框架必定都要 经历
2.3.3.9 添加公式单元格
Fornual formual = new Formual(0,11,”Sum(A1:A9)”);
wrb.addCell(formual);
2.3.3.10 添加图像
WritableImage wrimage=new WritableImage(1,5,10,10,new File(imageFilepath));
1.4.2 速度效率(读取 excel 数据)(来自网络)
文件 文件大小 57KB 文件大小 652KB 文件大小 2.24M
POI 加载耗时 1172 ms 2297 ms
3109ms
POI 总耗时 1172 ms 2313 ms 3140ms
JXL 加载耗时 1265 ms 4406 ms
16313ms
2.2.2 读取工作表
通过 Workbook 的 getSheet 方法选择第一个工作表(从 0 开始) Sheet sheet = workbook.getSheet(0); 也可以通过工作的名称来得到 Sheet
2.2.3 读取单元格
通过 Sheet 的 getCell 方法选择位置为 C2 的单元格(两个参数都从 0 开始) Cell c2 = sheet.getCell(2,1);
相关文档
最新文档