利用jxl.jar读写excel文件
这几天一直没更新笔记,就是因为卡在这里了,不得不说,底子太薄了,不多说进入正题
需要添加的jar包:jxl.jar
package plansinterface
import jxl.*;
import jxl.write.*;
import java.io.File;
//上面是包名和引入的类或方法
class Task {
static void main(args) {
def filename="D:\\soapuilog\\exceldb\\exceldb.xls" //定义数据源
def task = new Task()
task.Readexcel(filename)
task.writeexcel(2, 2, "abcd",filename)
//在主函数中实例化对象,然后进行方法调用
}
//下面是读取excel的方法,这里的资料是读取.xls文件,07以后的excel文件不适用,建议适用poi读取。ps:那个还没写稍后有空更新
/*读取excel的过程
1、考虑函数的参数问题,因为是读取文件,所已文件肯定是一个参数,要不然程序找不到文件就没法读取
2、把源文件找到之后,转换为jxl识别的Workbook 类型,也就是rwb(工作簿)
3、取出sheet(工作表)的数量和名称
4、取出单个sheet(工作表)中的rows(行数)、columns(列数)
5、定义一个二维数组(我这里是用groovy写的,跟java类似,其他语言自行参考)
6、利用循环读取每一个单元格的值,并存入数组中
*/
def Readexcel(filename){ //声明方法,设置一个参数
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(filename)); //找到源文件进行类型转换
int sheet = rwb.getNumberOfSheets(); //取出sheet的数量,如果有多个工作表,可以根据这个进行循环
def sheets = rwb.getSheets(); //取出sheet的值,赋值给sheet变量,这个变量类似于数组或列表
jxl.Sheet rs = rwb.getSheet(0); //取出第一个工作表对象,存入rs对象中
String sheetName = rs.getName(); //用于取出第一个工作表的名称(单纯读取不需要这行)
int columns = rs.getColumns(); //定义columns 变量,用于存放总共有多少列的数值
int rows = rs.getRows() //定义rows变量,用于存放总共有多少行的数值
def input = new Object[columns][rows] //input为一个数组,数组的坐标为行和列
for (c in 0..columns-1)
{
for (r in 0..rows-1)
{
input[c][r]= rs.getCell(c,r).getContents();
}
}
//println input
//遍历工作表的数据,存入数组中
rwb.close() //关闭文件,打开文件,用完后要记得关闭
/*
到这里为止,读取excel并存入数组的工作就完成了
下面的部分是介绍往已经存在的excel文件中写入数据
还是先梳理思路的问题
1、首先考虑参数问题
1.1、首先需要找到要修改的文件,那么文件参数是一个
1.2、如果要对单元格进行赋值,肯定需要坐标,坐标是又行和列决定的,所以需要行和列的值
1.3、找到目标单元格后,就需要赋值,那就需要一个“新值”的参数
2、给单元格赋值的过程
2.1、首先找到需要修改的文件,对源文件进行类型转换,转换为Workbook 类型
2.2、找到需要修改的sheet(工作表),并赋值给sheet对象
2.3、因为源文件是只读模式,所以建立一个源文件的副本
在参数中加入源文件工作表对象,是为了进行源文件和副本之间的数据传递
在副本中进行更改,然后把更新后的值传递给源文件的工作表对象
2.4、建立源文件需要修改的工作表对象副本(理由和2.3一致,这里我理解了好久,利用指针的原理总算想明白了)
2.5、利用Label定位单元格,并且传入“新值”
2.6、用addCell进行赋值
2.7、保存文件
2.8、关闭文件
*/
}
def writeexcel(column,row,newvalue,filename){ //声明方法,确定方法参数
Workbook rwb = Workbook.getWorkbook(new File(filename)); //找到源文件进行类型转换
Sheet sheet = rwb.getSheet(0) //找到需要修改的工作表,赋值给sheet对象
WritableWorkbook wwb = Workbook.createWorkbook(new File(filename),rwb)
//建立源文件副本,参数中加入源文件工作簿对象,用于数据传递
WritableSheet sh = wwb.getSheet(0) //找到需要修改的工作表,赋值给sh对象
Label label = new Label(column,row,newvalue) //利用Label定位单元格,并且传入“新值”
sh.addCell(label); //用addCell进行赋值
wwb.write(); //保存文件
wwb.close() //关闭文件
}
}