-
jexcelapi的初步进修
添加时间:2013-5-17 点击量:jexcelapi:jxl.jar的全称,一个便利java处理惩罚excel文件的包。
虽说不是好的选择,但我小我感觉用来进修的话,这个对象包不错。
起首,先梳理一下我们须要处理惩罚的 excel 文件的特点。
excel文件的三个层次:1、源文件(.xls) 2、表(sheet) 3、单位格(cell)
对excel进行操纵的话最首要的我感觉就是:新建、读取和批改。因为我是从读取数据切入的,就先说读取吧。
读取
在读取之前来熟悉一下须要应用到的对象:目标文件(.xls文件)、Workbook、Sheet、Cell
Workbook 应用来获取工作薄对象须要应用的类.
Sheet 和 Cell 是用来接管对应的 excel 文件的 Sheet 和 Cell的。
下面是演示代码:
1 public void readFile(String filePath) throws BiffException, IOException {
2 System.out.println(正在读取: + filePath + ...\n);
3 int columnNum, rowNum, x, y;
4 String mMap[][];
5
6 Workbook wb = Workbook.getWorkbook(new File(filePath));
7 Sheet sheet = wb.getSheet(0);
8
9 rowNum = sheet.getRows();// 排
10 columnNum = sheet.getColumns();// 列
11
12 mMap = new String[rowNum][columnNum];
13
14 // sheet.getCell(columnNum, rowNum)
15 for (x = 1; x < rowNum; x++) {
16 for (y = 0; y < columnNum; y++) {
17 mMap[x][y] = sheet.getCell(y, x).getContents();
18 }
19 }
20
21 for (x = 1; x < rowNum; x++) {
22 for (y = 0; y < columnNum; y++) {
23 System.out.print([ + mMap[x][y] + ]);
24 }
25 System.out.println();
26 }
27 wb.close();
28 System.out.println(\n读取: + filePath + 完成.);
29 }
readFile批改
批改之前的筹办:WritableWorkbook,WritableCell,WritableSheet看名字就能有所发明,无非就是添加了写的标识:Wirtable,应用上方根蒂根基上大同小异。
希罕注释下:
Workbook wb = Workbook.getWorkbook(sourceFile); //创建目标文件对象 wb, sourceFile 为源文件
WritableWorkbook wwb = Workbook.createWorkbook(targetFile, wb); //让目标文件转换为可写入对象 wwb , targetFile 为目标文件这两句代码就是用来实如今原excel文件长进行批改,值得存眷的就是源文件和目标文件的文件名一致相当于在源文件上批改,不然就是创建目标文件来装上批改后的数据。
演示代码:
1 public void File(String filePath) throws BiffException, IOException,
2 RowsExceededException, WriteException {
3 System.out.println(正在写入: + filePath + ...\n);
4 int rowNum, x, y;
5 WritableCell targetCell;
6 String data[][] = getData();
7
8 File file = new File(filePath);
9 Workbook wb = Workbook.getWorkbook(file);
10 WritableWorkbook wwb = Workbook.createWorkbook(file, wb);
11 WritableSheet sheet = wwb.getSheet(0);
12
13 targetCell = (WritableCell) sheet.getCell(0, 0);
14 if (targetCell.getContents().isEmpty()) {
15 sheet.addCell(new Label(0, 0, ID));
16 sheet.addCell(new Label(1, 0, 题目));
17 sheet.addCell(new Label(2, 0, 答案));
18 sheet.addCell(new Label(3, 0, 正确答案));
19
20 for (x = 0; x < data.length; x++) {
21 sheet.addCell(new Label(0, x + 1, (x + 1) + ));
22 for (y = 0; y < data[0].length; y++) {
23 sheet.addCell(new Label(y + 1, x + 1, data[x][y]));
24 }
25 }
26
27 } else {
28 rowNum = sheet.getRows();
29 for (x = 0; x < data.length; x++, rowNum++) {
30 sheet.addCell(new Number(0, rowNum, rowNum));
31 for (y = 0; y < data[0].length; y++) {
32 sheet.addCell(new Label(y + 1, rowNum, data[x][y]));
33 }
34 }
35 }
36
37 wwb.write();
38 wb.close();
39 wwb.close();
40 System.out.println(\n写入: + filePath + 完成.);
41 }
File
新建若是批改会了的话新建必然没题目了。
应用Workbook.createWorkbook(new File(fileName));就能轻松创建一个excel文件了。
至于要如何操纵就可以仿造批改和读取来操纵源文件就行。
总结
这是小弟第一次以博客的情势来记录进修过程。看官在看过之后给点定见和建议,不合错误的处所也请看官不吝赐教。
此次因为只需求对excel文件进行简单的操纵,所以就只进修到此,对和表格神马的都没还有具体进修,我想应当也差不久不多。对excel文件的读取进修斗劲顺利,在写入的时辰呈现了2小时的停止不前,无法对源文件进行批改。此两小时中各类排查,各类批改,最后发明居然是excel源文件勾选上了“只读”属性...对此,各位看官在进修的时辰重视下就好,也记录下来提示本身进修的时辰切忌“粗心大意”。
此次进修就此完结,项目开辟也有了进展,项目标成果会陆续公布出来,感爱好的伴侣可以存眷下,嘿嘿。
容易发怒的意思就是: 别人做了蠢事, 然后我们代替他们, 表现出笨蛋的样子。—— 蔡康永