求助libxl库,批量修改红框里的内容,合并表格造成了表格的行号和列号不一样。求一下大家的有没有好的办法

amin 16天前 247


最新回复 (12)
  • 光庆 16天前
    1 2
    就普通的赋值不可以吗?
  • amin 16天前
    0 3

    我的截图是其中的两个表,我这边还有26个这样的表。我的想法是要批量修改所有表中 红框里的值。

  • 光庆 15天前
    1 4
    amin 我的截图是其中的两个表,我这边还有26个这样的表。我的想法是要批量修改所有表中 红框里的值。
    跟批量没啥关系吧,只要能改一个,就能改所有的吧 。
  • amin 15天前
    0 5
    因为每个表中红框的列号和行号不是一样的。就造成用一个脚本只能处理当前一个工作簿,不能批量处理26个工作簿。能有办法一次处理26个工作簿不。有没有直接获得红框的行号和列号。
  • 光庆 15天前
    0 6
    找到这个单元格不就行了。
  • 山海师 15天前
    0 7
    先找到左边那个固定内容的单元格的位置,然后开始往右边遍历单元格,找到的第一个有内容的单元格就是目标单元格了
  • amin 15天前
    0 8
    import console; 
    import godking.libxl;
    import string;
    //批量生成工作表的表名
    filepath = "\res\5-1#\1.2、5-1#管内穿线和槽盒内敷线  检验批质量验收记录.xls"
    var book = godking.libxl.open(filepath)
    var sheet = book.sheet()
    var vals=  sheet.getTable()
    var newvals = {}
    for(i=1;#vals;1){
       var a = vals[i]
       for(j=1;#a;1){
       	if(a[j] != ""){
       		table.push(newvals,{i , j,a[j]})
       	}
       }
       
    }
    book.close()
    var name = "子单位"
    for(i=1;#newvals;1){
    	if(string.match(newvals[i][3],name) != null){
    	console.log(newvals[i+1][1],newvals[i+1][2])	
    	}
    	elseif(string.match(newvals[i][3],name) != null){
    	console.log("行"+newvals[i][1],"列"+newvals[i][2])
    	}
    
    }
    
    //import process
    //process(filepath)
    console.pause();

    这个是找根据蓝框里面的字符串,找后面的红框的的行号和列号。  光庆大佬看看有什么能在优化不能。

  • 光庆 14天前
    0 9

    import console; 
    import godking.libxl;
    import string;
    //批量生成工作表的表名
    filepath = "\工作簿1.xlsx"
    var book = godking.libxl.open(filepath);
    for(i=1; book.getSheetCount();1){
    	var sheet = book.sheet(i);
    	for(n=1;sheet.getMergeCount();1){
    		var _,row,col = sheet.getMergeByindex(n);
    		var t = sheet.getCellStr(row,col);
    		if ..string.find(t,"@单位(子单位)"){
    			var _,row,col = sheet.getMergeByindex(n+1);
    			if row and col {
    				console.dump(string.format("发现:%s,位于表[%s]%i行,%i列",sheet.getCellStr(row,col),book.getSheetName(i),row,col));
    			} else {
    				console.dump("发现子单位,但后面不是要找的内容");
    			}
    			break;
    		}
    	}
    }
    
    console.pause();


  • amin 14天前
    0 10
    精练,大佬威武!!
  • amin 14天前
    0 11
    getMergeByindex 合并单元的这几个函数用的真好。大佬这个方法 少一个for循环。我换需要再练练这两个函数的用法。。。
  • 光庆 13天前
    0 12
    amin getMergeByindex     合并单元的这几个函数用的真好。大佬这个方法 少一个for循环。我换需要再练练这两个函数的用法。。。

    少两个循环。我的两个循环,一个是遍历表,一个是遍历合并单元格,找那个项目单元格。

    而你的三个循环,都用来找你的项目单元格。你缺少遍历表的循环。

    也就是说,一个遍历合并单元格的for循环,就可以代替你的那三个for循环,效率应该是很高。

  • amin 11天前
    0 13

    这就是差距呀,换需要跟大佬多多学习哈!

返回