Excel 操作

CBrother提供了一个Excel扩展来操作excle文件,目前支持.xlsx和.csv两种格式。

Excel 类

Excel类表示一个Excel文档

  1. import CBExcel.code
  2. 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例子:

  1. import CBExcel.code
  2. function main(parm)
  3. {
  4. var excel = new Excel();
  5. var excelsheet = excel.addWorksheet("222");
  6. var cell = excelsheet.addCell("A10");
  7. cell.set("aaa");
  8. cell = excelsheet.addCell(5,"B");
  9. cell.set(100);
  10. cell = excelsheet.addCell(6,7);
  11. cell.set(200.0);
  12. excel.addWorksheet("333");
  13. excel.save(GetRoot() + "222.xlsx");
  14. excel.save(GetRoot() + "222.csv");
  15. }

运行后会在脚本工作路径旁边生成222.xlsx和222.csv

Excel 操作 - 图1

打开222.xlsx查看如下图,两张表都在,因为xlsx支持多张表

Excel 操作 - 图2

打开222.csv查看如下图,只有一张表,因为csv不支持多张表

Excel 操作 - 图3

读取Excel例子:

  1. import CBExcel.code
  2. function main(parm)
  3. {
  4. var excel = new Excel();
  5. var path = GetRoot() + "222.xlsx";
  6. if(!excel.load(path))
  7. {
  8. print "load err:" + path;
  9. return;
  10. }
  11. var sheetCnt = excel.getWorksheetCount();
  12. print "sheetCnt:" + sheetCnt;
  13. var excelsheet = excel.getWorksheet(0);//or excel.getWorksheet("222");
  14. var totalRows = excelsheet.getTotalRows();
  15. var totalClos = excelsheet.getTotalCols();
  16. print "totalRows:" + totalRows;
  17. print "totalClos:" + totalClos;
  18. var cell = excelsheet.getCell("A10");//or getCell(9,0); or getCell(9,"A");
  19. print cell.getString();
  20. cell = excelsheet.getCell(5,"b");
  21. print cell.getInt();
  22. print cell.getString();
  23. cell = excelsheet.getCell(6,7);
  24. print cell.getDouble();
  25. print cell.getString();
  26. }

运行结果如下:

  1. sheetCnt:2
  2. totalRows:10
  3. totalClos:7
  4. aaa
  5. 100
  6. 100
  7. 200.000000
  8. 200.000000

同样的方法也可以读取*.csv