Excel 操作
CBrother提供了一个Excel扩展来操作excle文件,目前支持.xlsx和.csv两种格式。
Excel 类
Excel类表示一个Excel文档
import CBExcel.code
var excel = new Excel();
函数 | 描述 | 用法 |
---|---|---|
load(path) | 加载excel文档,path为绝对路径,返回true加载成功 | excel.load("e:/test.xlsx")
excel.load("e:/test.csv") |
save(path) | 保存excel文档,path为绝对路径,返回true保存成功 | excel.save("e:/test.xlsx")
excel.save("e:/test.csv") |
getWorksheetCount() | 获取文档内表格数量 | var cnt = excel.getWorksheetCount() |
getWorksheet(name) | 根据表格名字获取表格对象,没找到返回null | var sheet = excel.getWorksheet("sheet1") |
getWorksheet(index) | 根据序号获取表格对象,没找到返回null,序号从0开始 | var sheet = excel.getWorksheet(0) |
addWorksheet(name) | 添加一张表,name为表名,返回添加的表格对象,添加失败返回null | var sheet = excel.addWorksheet("sheet2") |
removeWorksheet(name) | 根据表格名字删除表格,返回true为删除成功。 | excel.removeWorksheet("sheet2") |
removeWorksheet(index) | 根据序号删除表格,返回true为删除成功,序号从0开始 | excel.removeWorksheet(0) |
ExcelSheet 类
ExcelSheet类表示excel内的一张表格。该对象不能主动创建,只能从Excel类里面获取。
函数 | 描述 | 用法 |
---|---|---|
getTotalRows() | 获取该表格使用到的最大行数 | var rows = excelsheet.getTotalRows() |
getTotalCols() | 获取该表格使用到的最大列数 | var clos = excelsheet.getTotalCols() |
getSheetName() | 获取本张表格名称 | var name = excelsheet.getSheetName() |
setSheetName(name) | 修改本张表格名称,返回true为修改成功 | excelsheet.setSheetName("sheet2") |
getCell(name) | 根据格子名称获取格子对象,对应格子没有内容返回null | var cell = excelsheet.getCell("A5") |
getCell(row,cloName) | 根据行数和列名称获取格子对象,row为整数表示行号,从0开始, cloName为字符串列名称,对应格子没有内容返回null | var cell = excelsheet.getCell(4,"A") |
getCell(row,clo) | 根据行数和列数获取格子对象,row为整数表示行号,从0开始, clo为整数列号,从0开始,对应格子没有内容返回null | var cell = excelsheet.getCell(4,0) |
addCell(name) | 根据格子名称增加格子对象,返回增加的格子对象,出错返回null | var cell = excelsheet.addCell("A5") |
addCell(row,cloName) | 根据行数和列名称增加格子对象,row为整数表示行号,从0开始, cloName为字符串列名称,返回增加的格子对象,出错返回null | var cell = excelsheet.addCell(4,"A") |
addCell(row,clo) | 根据行数和列数增加格子对象,row为整数表示行号,从0开始, clo为整数列号,从0开始,返回增加的格子对象,出错返回null | var cell = excelsheet.addCell(4,0) |
getIndex() | 获取本表格序号 | var index = excelsheet.getIndex() |
setIndex(index) | 修改本表格序号,从0开始,修改成功返回true | excelsheet.setIndex(1) |
ExcelCell 类
ExcelCell类表示表格里的格子。该对象不能主动创建,只能从ExcelSheet类里面获取。
函数 | 描述 | 用法 |
---|---|---|
getInt() | 获取值,转为整数。 | var value = excelCell.getInt() |
getDouble() | 获取值,转为浮点数。 | var value = excelCell.getDouble() |
getString() | 获取值,转为字符串。 | var value = excelCell.getString() |
set(value) | 设置格子的内容,value可以为字符串、整数、浮点数 | excelCell.set(0)excelCell.set("111") |
创建一个Excel例子:
import CBExcel.code
function main(parm)
{
var excel = new Excel();
var excelsheet = excel.addWorksheet("222");
var cell = excelsheet.addCell("A10");
cell.set("aaa");
cell = excelsheet.addCell(5,"B");
cell.set(100);
cell = excelsheet.addCell(6,7);
cell.set(200.0);
excel.addWorksheet("333");
excel.save(GetRoot() + "222.xlsx");
excel.save(GetRoot() + "222.csv");
}
运行后会在脚本工作路径旁边生成222.xlsx和222.csv
打开222.xlsx查看如下图,两张表都在,因为xlsx支持多张表
打开222.csv查看如下图,只有一张表,因为csv不支持多张表
读取Excel例子:
import CBExcel.code
function main(parm)
{
var excel = new Excel();
var path = GetRoot() + "222.xlsx";
if(!excel.load(path))
{
print "load err:" + path;
return;
}
var sheetCnt = excel.getWorksheetCount();
print "sheetCnt:" + sheetCnt;
var excelsheet = excel.getWorksheet(0);//or excel.getWorksheet("222");
var totalRows = excelsheet.getTotalRows();
var totalClos = excelsheet.getTotalCols();
print "totalRows:" + totalRows;
print "totalClos:" + totalClos;
var cell = excelsheet.getCell("A10");//or getCell(9,0); or getCell(9,"A");
print cell.getString();
cell = excelsheet.getCell(5,"b");
print cell.getInt();
print cell.getString();
cell = excelsheet.getCell(6,7);
print cell.getDouble();
print cell.getString();
}
运行结果如下:
sheetCnt:2
totalRows:10
totalClos:7
aaa
100
100
200.000000
200.000000
同样的方法也可以读取*.csv