WPS JS 宏实现表间导入

工具软件:WPS JS宏编辑器

前言:

我们在工作过程中往往出现一个表复制部分数据到另一个表,并且两个表有部分内容是相同的,数量也比较多,这种情况下,使用WPS JS宏进行表间数据导入十分方便快捷!

提供以下代码:

function 数据导入(){
	let Sheet_one=ActiveWorkbook.Sheets("工作台");  //定义当前在活动的工作表
	let Sheet_two=ActiveWorkbook.Sheets('数据表');	//定义了需要导入的工作表
	let Columns_End=Sheet_two.Range("ZZ1").End(xlToLeft); //定义了需要导入工作表的字段内容终点
	let Wordbook_One=ThisWorkbook;                   //定义当前活动工作薄
	let Path_one=Wordbook_One.Path+'\\导入文件\\*.xlsx';  //定义当前活动工作薄的路径文件内容
	let i=2,y=2,x=2;
	let file=Dir(Path_one);                   //定义当前活动工作薄下面的文件
	while (true){									//定义条件为真时执行
		try{													
			let Path_two=Wordbook_One.Path+"\\导入文件\\"+file;   //把获取的文件赋给一个变量
			let Wordbook_Two=Workbooks.Open(Path_two);			//打开获取的文件
			for(var Sheet_name of Wordbook_Two.Sheets){					//遍历获取的工作薄的工作表
				if(Sheet_name.Name=="Sheet1"){								//当工作表名等“Sheet1”,对这个工作表进行操作
					Columns_Endone=Sheet_name.Range("ZZ1").End(xlToLeft)	//定义被导入的工作表的字段尾单元格,起到一个定位作用
					Rows_Endone=Sheet_name.Range("A9999").End(xlUp)			//定义被导入的工作表的最后一行,也是起到定位至尾单元格
					for (var Columns_value of Sheet_name.Range("A1",Columns_Endone)){	//遍历导入的工作表的字段每一项内容
						Sheet_one.Cells(x,10).Value2=Columns_value.Value2;				//获取被导入工作表的字段内容	
						Sheet_one.Cells(y,8).Value2=file;								//获取被导入工作表的文件名
						Sheet_one.Cells(i,9).Value2=Sheet_name.Name;					//获取被导入工作表的表名
						y++,x++,i++
						let z=2	
						for(var Columns_valueOne of Sheet_two.Range('A1',Columns_End)){			//遍历需要导入的工作表的字段每一项内容
							Sheet_one.Cells(z,11).Value2=Columns_valueOne.Value2;					//获取需要导入工作表的字段内容
							z++
							if(Columns_value.Value2==Columns_valueOne.Value2){						//把需要导入的工作字段各被导入工作字段进行对比,如果相同就进行以下操作
								Sheet_name.Range(Cells(2,Columns_value.Column),Cells(Rows_Endone.Row,Columns_value.Column)).Copy(Sheet_two.Cells(2,Columns_valueOne.Column))		//把相同的列复制到需要导入的工作表
							}
						}
					}		
				}
			}
			Wordbook_Two.Close();			//关闭被导入工作薄
			Sheets("数据表").Activate();		//把数据表定义为当前活动工作表
			file=Dir()	
		}catch(err){
			alert("己导入所有工作表内容")
			break;
	}
	}
}

附加功能:快速清空表格

function 清空数据(){
	let Sheet_two=ActiveWorkbook.Sheets('数据表');
	let Rows_Endone=Sheet_two.Range("A9999").End(xlUp); 
	let Columns_End=Sheet_two.Range("ZZ1").End(xlToLeft); 
	if(Rows_Endone.Row>1){
		Sheet_two.Range(Cells(2,"a"),Cells(Rows_Endone.Row,Columns_End.Column)).ClearContents()
	} 
}

使用WPS JS宏进行办公自动化你是否有兴趣呢?请进行投票

### 使用 JavaScriptJSON 数据导入 WPS 格 为了实现这一目标,可以采用 `WinHttpRequest` 对象来获取远程服务器上的 JSON 文件,并利用第三方库如 `js-xlsx` 来处理这些数据以便于它们能够被正确地显示在 WPS 格中。 #### 获取 JSON 数据 由于 WPS JS 环境并不直接支持外部库的引入,因此对于发起 HTTP 请求的操作主要依靠内置的对象——`WinHttpRequest`。此对象允许发送 GET 或 POST 请求从而取得来自互联网资源的信息[^1]。 ```javascript var http = new ActiveXObject("WinHttp.WinHttpRequest.5.1"); http.Open("GET", "https://example.com/data.json", false); http.Send(); if (http.Status === 200) { var jsonData = JSON.parse(http.ResponseText); // 解析返回的内容作为 JSON 对象 } ``` #### 处理与转换 JSON 数据至 Excel 格式 考虑到不同 Office 版本兼容性问题,在某些情况下可能需要指定导出文件为 `.xls` 而不是 `.xlsx` 扩展名以确保更广泛的软件支持[^4]。这里推荐使用开源项目 `js-xlsx` 提供的功能来进行 JSON 到 Excel 的转换工作[^3]: ```javascript // 假设已经有一个名为 jsonData 的变量存储着从上面代码片段获得的数据结构 function jsonToXLS(jsonData, sheetName){ /* 创建一个新的工作簿 */ let wb = XLSX.utils.book_new(); /* 把 JSON 数组转化为 worksheet */ let ws_data = []; jsonData.forEach(function(row){ Object.keys(row).forEach((key,i)=>{ if(ws_data.length<=i){ws_data.push([]);} ws_data[i].push(key); }); row.values().forEach((value,j)=>{ if(ws_data[j]){ws_data[j].push(value);}else{ws_data.push([value]);} }) }); let ws = XLSX.utils.aoa_to_sheet(ws_data); /* 添加worksheet到workbook*/ XLSX.utils.book_append_sheet(wb, ws, sheetName || 'SheetJS'); /* 导出 .xls 文件 */ XLSX.writeFile(wb, `${sheetName}.xls`); } jsonToXLS(jsonData,"SampleSheet"); ``` 上述脚本会读取由 `jsonData` 变量示的一系列记录,并创建一个新单页命名为 `"SampleSheet"` ,最后保存为同名 `.xls` 文件形式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HuangTeacher810

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值