下载JExcelAPI类库
问题:我如何下载JExcelAPI?
回答:完全遵循下面的步骤下载JExcelAPI:
1.使用浏览器打开JExcelAPI的主页。
2.点击 jexcelapi 这个链接。
3.在结果页,点击任意一个文件夹链接。例如,我点击了 2.6.12 这个链接。
4.在结果页,点击分发文档文件名。例如,我点击了 jexcelapi_2_6_12.zip 这个链接。
5.稍微等待一下之后,你的浏览器会弹出对话框提醒你去保存这个文件。继续点击去保存这个文件即可。
下载完成后,解压这个文件。你会发现一个 jexcelapi 主目录在jexcelapi_2_6_12 目录下面。
使用 JExcelAPI 类库
问题: JExcelAPI 类库包括一些例子程序吗 ?
回答:JExcelAPI 的 jexcelapi 主目录包含一个叫 jxl.jar 的文件,这个文件包含一些读写和复制电子表格的例子程序。这个读取的例子读取的是一个已经存在的电子表格,并且通过 -csv 或者 -xml 命令行选项转换它为逗号分隔值(CSV)或者XML格式的文档。参考一下下面的例子:
1
2
|
java -jar jxl.jar -csv budget.xls
java -jar jxl.jar -xml budget.xls
|
这些例子读取 budget.xls 文件而且以CSV和XML格式输出它的内容到标准输出流。当 -csv 和 -xml都没有被指定的时候,默认使用 -csv。
这个写入的例子创建一个包含公式,边界,图片,和更多其他元素的电子表格样本。这个电子表格通过指定 -write 命令行参数生成,就像下面使用的那样:
1
|
java -jar jxl.jar -write sample.xls
|
图片1展现了 sample.xls 电子表格文件部分结果。
这个复制的例子复制了和 jxl.jar 存储在同一目录下的样本 jxlrwtest.xls 电子表格成为一个新的电子表格。在这个复制完成后的电子表格中,第一个工作薄(原始的)没有改变然而第二个工作薄(改变了的)包含了改变后的内容。
这个例子通过指定 -rw 命令行参数后面加上 jxlrwtest.xls 和输出电子表格的名称而产生。参考下面的命令行:
1
|
java -jar jxl.jar -rw jxlrwtest.xls copy.xls
|
这个命令行复制 jxlrwtest.xls 为 copy.xls。图表2展现了第二部分(修改了的)工作簿在 LibreOffice Calc 下面。
为编译执行引入JExcelAPI
问题:当我编译源代码和运行一个应用的时候如何引入 JExcelAPI 。
回答:当编译源代码和运行一个应用的时候引入 JExcelAPI ,做下面的其中一件事情:
- 添加 jexcelapi 主目录里面的 jxl.jar 文件到你的 CLASSPATH 环境变量中。
- 通过 javac 和 java 命令的 -cp 选项引入 jxl.jar。
JExcelAPI 编程
问题:我如何创建使用 JExcelAPI 的Java项目。
回答:这个 jexcelapi 主目录包含一个 tutorial.html 文件,它里面有对JExcelAPI编程的基本指导。这个手册告诉你如何读,写,和复制电子表格。这个手册也谈论了格式化。
jexcelapi 也包括一个 docs 子目录,它提供了查看更多的API文档的通道。使用你的浏览器访问这个目录下的index.html 文件你就可以查看到这个类库下的四个已经建立好文档的包:
- jxl: 主要包的文档
- jxl.demo: 各种demo的文档
- jxl.format: 与格式化相关的文档
- jxl.write: 与写电子表格相关的文档
注意一下这个列表不是详尽的。附加的包比如 jxl.read 是出现的但是没有建立好文档。想去了解附件的包,运行 jar tvf jxl.jar 然后再在生成的jar列表里面检查包的信息。
为了帮助你使用JExcelAPI,我已经创建了一个简单的JExcelAPIDemo应用,它示范创建一个保存到output.xls的新的电子表格然后再读取并且输出这个电子表格的内容。查看列表1。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
import
java.io.File;
import
java.io.IOException;
import
jxl.Cell;
import
jxl.Sheet;
import
jxl.Workbook;
import
jxl.read.biff.BiffException;
import
jxl.write.Label;
import
jxl.write.Number;
import
jxl.write.WritableSheet;
import
jxl.write.WritableWorkbook;
import
jxl.write.WriteException;
public
class
JExcelAPIDemo
{
public
static
void
main(String[] args)
throws
BiffException, IOException, WriteException
{
WritableWorkbook wworkbook;
wworkbook = Workbook.createWorkbook(
new
File(
"output.xls"
));
WritableSheet wsheet = wworkbook.createSheet(
"First Sheet"
,
0
);
Label label =
new
Label(
0
,
2
,
"A label record"
);
wsheet.addCell(label);
Number number =
new
Number(
3
,
4
,
3.1459
);
wsheet.addCell(number);
wworkbook.write();
wworkbook.close();
Workbook workbook = Workbook.getWorkbook(
new
File(
"output.xls"
));
Sheet sheet = workbook.getSheet(
0
);
Cell cell1 = sheet.getCell(
0
,
2
);
System.out.println(cell1.getContents());
Cell cell2 = sheet.getCell(
3
,
4
);
System.out.println(cell2.getContents());
workbook.close();
}
}
|
列表1: 写和读取一个简单的电子表格
列表1的代码通过调用Workbook 的工厂方法首先创建了一个可写的工作簿。然后这个工作簿的一个可写单元被随后创建,然后一个标签名和一个数字被加入到工作簿中作为这个工作薄的两个单元的值。这个工作博随后被创建完成然后关闭。
列表1的代码继续关联output.xls文件工作簿然后读取它的内容。这个getSheet()方法连接电子表格的第一个工作簿。它的getCell()方法被调用去连接这两个单元,然后它的内容被读出。
假设jxl.jar 文件放在当前目录中,运行下面的命令去编译列表1的代码:
1
|
javac -
cp
jxl.jar JExcelAPIDemo.java
|
如果成功之后,运行下面的命令启动JExcelAPIDemo:
1
|
java -
cp
jxl.jar;. JExcelAPIDemo
|
你会发现下面的输出:
1
2
|
A label record
3.146
|
图片3展示 LibreOffice 打开的 output.xls的内容。