libxl Excel操作库(getTable方法问题2025/8/4)

zhhyit 1天前 106

getTable("A1","B2",null/*字段表*/,/*空文本替代符*/,/*是否转文本*/) = 获取从指定的开始单元格到结束单元格之间的全部内容。{

    参数:

    1、开始单元格

    2、结束单元格

    3、字典型数据的字段,可以为以下值(默认:null):

        【1】:将第一行作为字段,返回字典型数据表

        【字段表】:将对应列的值赋给指定的字段,返回字典型数据表

        【null】:返回数组型数据表

    4、空文本替代符:单元格值若为null或""则设为该值。

    5、可通过设置 convertDate 和 convertFormula 属性,改变日期和公式返回值格式。

}

godking.libxl
getTable方法问题反馈
 //筛选器例程
import godking.libxl;
import console
// 注意:xls格式不支持筛选功能
var book = godking.libxl.new("C:\Users\chenlc\Desktop\filter.xlsx","筛选器例程")
var sheet = book.sheet();
 
/*
    sheet.setValue(2, 1,"国家");
    sheet.setValue(2, 2,"交通死亡率");
    sheet.setValue(2, 3,"吸烟死亡率");
    sheet.setValue(2, 4,"自杀死亡率");
 
    sheet.setValue(3, 1,"USA");   	  sheet.setValue(4, 1,"Greenland"); 
    sheet.setValue(3, 2, 64);         sheet.setValue(4, 2, 94);
    sheet.setValue(3, 3, 69);         sheet.setValue(4, 3, 55);
    sheet.setValue(3, 4, 49);         sheet.setValue(4, 4, 64);
 
    sheet.setValue(5, 1,"Germany");   sheet.setValue(6, 1,"Switzerland");
    sheet.setValue(5, 2, 88);         sheet.setValue(6, 2, 93); 
    sheet.setValue(5, 3, 46);         sheet.setValue(6, 3, 54);
    sheet.setValue(5, 4, 55);         sheet.setValue(6, 4, 50);
 
    sheet.setValue(7, 1,"Spain");     sheet.setValue(8, 1,"Gobon"); 
    sheet.setValue(7, 2, 86);         sheet.setValue(8, 2, 75); 
    sheet.setValue(7, 3, 47);         sheet.setValue(8, 3, 52);
    sheet.setValue(7, 4, 69);         sheet.setValue(8, 4, 71);
 
    sheet.setValue(9, 1,"Greece");    sheet.setValue(10, 1,"Japan");
    sheet.setValue(9, 2, 67);         sheet.setValue(10, 2, 91);
    sheet.setValue(9, 3, 23);         sheet.setValue(10, 3, 57);
    sheet.setValue(9, 4, 87);         sheet.setValue(10, 4, 36);
 
var filter = sheet.filter()
 
//添加筛选条件1:第1列为"G"开头
var col1 = filter.filterColumn(1)
col1.addFilter("G*")
 
//添加筛选条件2:第2列数值>50且<90
var col2 = filter.filterColumn(2)
col2.setCustomFilter(">",50,"<",90,"and")

//添加筛选条件3:第3列数值>20且<50
var col3 = filter.filterColumn(3)
col3.setCustomFilter(">",20,"<",50,"and")
 
//添加排序方式
filter.setSort(2,true) // 按第2列逆序排序
 
// 应用筛选和排序设置
filter.apply()
*/

var datecells = {};

datecells=sheet.getTable("A1","C7",null/*字段表*/,88/*空文本替代符*/,1/*是否转文本*/)

console.dumpTable(datecells)
console.pause(true);

book.save()
book.release()
 
/*
import process
process("C:\Users\chenlc\Desktop\filter.xlsx")
*/

控制台输出的提示,并没有获得单元格为数组;

把代码注释掉的,改为非注释控制台输出正常数组

 //筛选器例程
import godking.libxl;
import console
// 注意:xls格式不支持筛选功能
var book = godking.libxl.new("C:\Users\chenlc\Desktop\filter.xlsx","筛选器例程")
var sheet = book.sheet();
 
    sheet.setValue(2, 1,"国家");
    sheet.setValue(2, 2,"交通死亡率");
    sheet.setValue(2, 3,"吸烟死亡率");
    sheet.setValue(2, 4,"自杀死亡率");
 
    sheet.setValue(3, 1,"USA");   	  sheet.setValue(4, 1,"Greenland"); 
    sheet.setValue(3, 2, 64);         sheet.setValue(4, 2, 94);
    sheet.setValue(3, 3, 69);         sheet.setValue(4, 3, 55);
    sheet.setValue(3, 4, 49);         sheet.setValue(4, 4, 64);
 
    sheet.setValue(5, 1,"Germany");   sheet.setValue(6, 1,"Switzerland");
    sheet.setValue(5, 2, 88);         sheet.setValue(6, 2, 93); 
    sheet.setValue(5, 3, 46);         sheet.setValue(6, 3, 54);
    sheet.setValue(5, 4, 55);         sheet.setValue(6, 4, 50);
 
    sheet.setValue(7, 1,"Spain");     sheet.setValue(8, 1,"Gobon"); 
    sheet.setValue(7, 2, 86);         sheet.setValue(8, 2, 75); 
    sheet.setValue(7, 3, 47);         sheet.setValue(8, 3, 52);
    sheet.setValue(7, 4, 69);         sheet.setValue(8, 4, 71);
 
    sheet.setValue(9, 1,"Greece");    sheet.setValue(10, 1,"Japan");
    sheet.setValue(9, 2, 67);         sheet.setValue(10, 2, 91);
    sheet.setValue(9, 3, 23);         sheet.setValue(10, 3, 57);
    sheet.setValue(9, 4, 87);         sheet.setValue(10, 4, 36);
 
var filter = sheet.filter()
 
//添加筛选条件1:第1列为"G"开头
var col1 = filter.filterColumn(1)
col1.addFilter("G*")
 
//添加筛选条件2:第2列数值>50且<90
var col2 = filter.filterColumn(2)
col2.setCustomFilter(">",50,"<",90,"and")

//添加筛选条件3:第3列数值>20且<50
var col3 = filter.filterColumn(3)
col3.setCustomFilter(">",20,"<",50,"and")
 
//添加排序方式
filter.setSort(2,true) // 按第2列逆序排序
 
// 应用筛选和排序设置
filter.apply()

var datecells = {};

datecells=sheet.getTable("A1","C7",null/*字段表*/,88/*空文本替代符*/,1/*是否转文本*/)

console.dumpTable(datecells)
console.pause(true);

book.save()
book.release()
 
/*
import process
process("C:\Users\chenlc\Desktop\filter.xlsx")
*/

控制台输出的提示,获得单元格为数组;

最新回复 (8)
  • 光庆 16小时前
    0 2
    注释掉就没有数据了,都用88填充了,所以,代码运行应该是正常的。
  • zhhyit 14小时前
    0 3

    光庆大佬,我试了filter.xlsx这个数据表里有数据的情况下,也用getTable方法拿不到数据

    我就很好奇,为什么写入了一部分数据,就可以getTable方法拿到数据,直接打开表格却拿不到任何数据

    数据表里有数据

     //筛选器例程
    import godking.libxl;
    import console
    // 注意:xls格式不支持筛选功能
    var book = godking.libxl.new("E:\filter.xlsx","筛选器例程")
    var sheet = book.sheet();
    
    console.dump(sheet.name)
    
    var datecells = {};
    datecells=sheet.getTable("A1","C7",null/*字段表*/,"未读取到数据"/*空文本替代符*/,1/*是否转文本*/)
    
    console.dumpTable(datecells)
    console.pause(true);
    
    book.save()
    book.release()


  • 光庆 14小时前
    0 4
    • var book = godking.libxl.new("E:\filter.xlsx","筛选器例程")

    • 这里的 new 的意思是新建,你的已存在的数据无效。

    • 如果要使用已存在的数据,可以用

    • var book = godking.libxl.open("E:\filter.xlsx","筛选器例程")

    • var book = godking.libxl("E:\filter.xlsx","筛选器例程")

  • zhhyit 11小时前
    0 5
    光庆 var book = godking.libxl.new(&quot;E:\filter.xlsx&quot;,&quot;筛选器例程&quot;)这里的 new 的意 ...
    咦,确实好了,是我的问题,没仔细看函数库,我以为存在就不新建了,不存在就新建一个
  • zhhyit 10小时前
    0 6
    光庆 var book = godking.libxl.new(&quot;E:\filter.xlsx&quot;,&quot;筛选器例程&quot;)这里的 new 的意 ...

    另外一个问题

    import godking.libxl;对加密的Excel的数据好像获取是null

    import com.excel; 对加密的Excel的数据正常读取

    加密系统一般是公司内部对文件外发的管控的加密程序,但是企业内部一般在自己的加密环境下使用文档没有任何感觉,可以正常使用文件(也可以写VB\VBA等读取表格)

    godking.libxl;库对公司的加密环境下,第一步var book = godking.libxl("E:\filter.xlsx","筛选器例程"),就获取不到book

  • 光庆 9小时前
    0 7
    zhhyit 另外一个问题import godking.libxl;对加密的Excel的数据好像获取是nullimport com.excel;&nbsp;对加密的Excel的数据正常读取加密系统一般是公司 ...
    没测试过,不清楚。
  • zhhyit 6小时前
    0 8
    刚好有这样的加密环境(亿赛通),我试了一下,在这种办公环境下,用这个库获取已有的工作簿报错,第一步就卡住了 这么好的库用不了,尴尬了,用COM虽然可以,但是效率太低,还存在进程管理,调用完还得清理进程
  • 光庆 4小时前
    0 9
    zhhyit 刚好有这样的加密环境(亿赛通),我试了一下,在这种办公环境下,用这个库获取已有的工作簿报错,第一步就卡住了 这么好的库用不了,尴尬了,用COM虽然可以,但是效率太低,还存在进程管理,调用完还得清理进 ...
    文件和你的测试代码,发上来测试一下
返回