WPS常用表格对象应用

一、工作簿操作

function 新建工作簿()
{
	let wb=Workbooks.Add();
	wb.SaveAs("C:/Users/demo/Desktop/123/test.xlsx");
	wb.Close();
//	Workbooks.Add("C:/Users/demo/Desktop/123/工资表.xlsx")

}
function 删除文件(){
//	Kill("C:/Users/demo/Desktop/123/test.xlsx");
	Kill("C:/Users/demo/Desktop/123/*.txt")
}
function 新建工作簿(){
	let strpath = ThisWorkbook.Path;
	for(let datesV = 1 ;datesV<=12;datesV++){
		let wb = Workbooks.Add(`${strpath}/工资表.xlsx`);//以工作表为模板
		wb.SaveAs(`${strpath}/2023/${datesV}月.xlsx`);
		wb.Close()
	}
}
function 打开关闭工作簿(){
	let wb=Workbooks.Open("D:\\WPS JS宏视频教程\\第3章\\3-3\\demo.xlsx");
	Range("a1:d10").Value2=100;
//	wb.Save();
	wb.Close(true);
}
function 取文件名(){
	let strpath = Dir(ThisWorkbook.Path+"/产品/*.xls*")
	while(strpath != ""){
		console.log(strpath);
		strpath = Dir();
	}
}
function 汇总每个工作簿中的数据(){
	let strPath=Workbooks.Item("3-5.xlsm").Path;
	let strFileName=Dir(`${strPath}\\产品\\*.xlsx`);
	let intTotal=0;
	while (strFileName!=""){
		let wb=Workbooks.Open(`${strPath}\\产品\\${strFileName}`);
		intTotal +=wb.Sheets(1).Range("b14").Value();
		wb.Close(false);
		strFileName=Dir();
	}
	alert(`总金额为:${intTotal}`);
function 判断工作簿是否打开(){
	let intNum=0
	for (let wb of Workbooks){
		if (wb.Name=="调查表.xlsx"){
			intNum++;
		}
	}
	switch (intNum){
		case 0:
			Workbooks.Open("D:/WPS JS宏视频教程/第3章/3-6/调查表.xlsx");
			break;
		case 1:
			alert("调查表.xlsx,已打开!")
			break;
	}
}

二、工作表操作

新建:
Sheets.Add(Before, After, Count, Type)
可以创建的类型为:xlWorksheet(工作表)、xlChart(图表)、xlExcel4MacroSheet(宏表) 或 xlExcel4IntlMacroSheet(支持多语言的宏表)。
以新建工作表为例,讲解一下JS宏中的函数(也就是方法),它的使用方法。
1.如果参数中带有?,表示可选参数。否则表示必选参数。
2.可选参数如果是最后一个位置,可以忽略不写。
3.可选参数如果不在最后,不能忽略不写,必需写undefined。
--------------------------
删除:
ActiveWindow.SelectedSheets.Delete //删除已经选择的工作表
Sheets(n).Delete(); //删除指定的单个工作表
注意:工作表可以用索引,也可以用名称。
function Macro2()
{
	let u=undefined;
	Sheets.Add(u, Sheets("Sheet15"), 1,u);
}
function Macro1()
{
//	Sheets.Item("Chart1").Select(false);
	Sheets(2).Delete();
//	Sheets.Item("Sheet2").Activate();
//	ActiveWindow.SelectedSheets.Delete();
}
function 提取工作簿和工作表名称(){
	let wbOpen=Workbooks.Item("3-8.xlsm");
	let strFileName=Dir(`${wbOpen.Path}\\销售表\\*.xlsx`);
	let intRowNum=1;
	while (strFileName!=""){
		let wb=Workbooks.Open(`${wbOpen.Path}\\销售表\\${strFileName}`)
		for (let ws of wb.Sheets){
			wbOpen.Sheets(1).Cells(intRowNum,"A").Value2=wb.Name;
			wbOpen.Sheets(1).Cells(intRowNum,"B").Value2=ws.Name;
			intRowNum++;
		}
		wb.Close(false);
		strFileName=Dir();
	}
}
function 工作表的复制和移动(){
	//移动(move)复制(copy),两个参数为before和after
	//同一个工作簿下工作表的移动与复制
	Sheets("工资表").Move(Sheets("other")); 
	Sheets("工资表").Move(undefined,Sheets("other"));
	
	//不同工作簿下工作表的移动与复制
	let wbSoure=Workbooks.Item("3-9.xlsm");
	let wbTarget=Workbooks.Item("demo.xlsx");
	wbSoure.Sheets("工资表").Copy(wbTarget.Sheets(1))
	wbSoure.Sheets("工资表").Copy(undefined,wbTarget.Sheets(2))
	
	//工作表的移动复制到新工作簿
	Sheets(1).Copy();
}
function 批量创建工作表(){
	for (let intYear=2020;intYear<=2023;intYear++){
		let wbNew=Workbooks.Add();
		for (let intMonth=12;intMonth>=1;intMonth--){
			let wsNew=wbNew.Sheets.Add();
			wsNew.Name=`${intMonth}`;
		}
		wbNew.Sheets(wbNew.Sheets.Count).Delete();
		wbNew.SaveAs(`${Workbooks.Item("3-10.xlsm").Path}\\年份\\${intYear}年.xlsx`);
		wbNew.Close();
	}
}
function 工作表拆分到多个工作簿(){
	for (let ws of Sheets){
		if (ws.Name.split("-")[1]=="A"){//拆分成数组
			ws.Copy();
			ActiveWorkbook.SaveAs(`${Workbooks("3-11.xlsm").Path}\\类别\\${ws.Name}.xlsx`);
			ActiveWorkbook.Close();
		}
	}
}

JavaScript split() 方法

function 将月工作表按季拆分到工作簿(){
	for (let intQ of [1,2,3,4]){
		let wb=Workbooks.Add();
		wb.SaveAs(`${Workbooks.Item("3-12.xlsm").Path}\\季度\\第${intQ}季度.xlsx`);
	}
	for (let intNum=1;intNum<=12;intNum++){
		let intN=parseInt((intNum+2)/3);
		let wbTarget=Workbooks.Item(`${intN}季度.xlsx`);
		let wbSource=Workbooks.Item("3-12.xlsm");
		wbSource.Sheets(intNum).Copy(undefined,wbTarget.Sheets(wbTarget.Sheets.Count));
	}
	for (let wb of Workbooks){
		if (wb.Name!="3-12.xlsm"){
			wb.Sheets(1).Delete();
			wb.Close(true);
		} 
	}
}

JavaScript parseInt() 函数

三、单元格操作

向单元格写入数据的几种方法

function 向单元格写入数据的几种方法(){
	//1
	Sheets(1).Range("a4:d5").Copy(Sheets(2).Range("a1")
	//2
	Sheets(1).Range("a4:d5").Copy();
	Sheets(2).Range("a4").PasteSpecial(xlPasteValuesAndNumberFormats);
	//3
	Sheets(2).Range("a9:d11").Value2=Sheets(1).Range("a4:d5").Value()
}

单元格的相对定位

1.Range.Range		在原来位置重定位
2.Range.EntireRow		单元格所在行
3.Range.EntireColumn	单元格所在列
function test(){
	Range("a5").Range("a5").Range("b3").Select();
	Range("a5:a10").EntireRow.Select()
	Range("a5:c10").EntireColumn.Select()
	Range("c5:c10").EntireColumn.Range("a1:a2").Select()
}

单元格偏移与区域重选

Range.Item	偏移方法-1
Range.Offset	偏移方法-2(可以返回Range对象)
Range.Resize	区域重选(可以返回Range对象)
function test(){
	Range("b2").Item(2,3).Select();
	Range("b2:c4")(2,3).Select();
	
	Range("b2").Offset(2,3).Select();
	Range("b2:c4").Offset(2,3).Select();

	Range("b2").Resize(2,3).Select();
	Range("b2:c4").Resize(2,3).Select();
}

应用

1、模仿条件格式着色

function test(){
	Range("a2:d11").Interior.Pattern = xlPatternNone;//清除色彩
	for (let rngCell of Range("d2:d11")){
		if (rngCell.Value()>0){
//			rngCell.EntireRow.Range("a1:d1").Interior.ColorIndex=8;
			rngCell.Offset(0,-3).Resize(1,4).Interior.ColorIndex=8;
		}
	}
}

2、按条件筛选数据

function test(){
	let intRowNum=1;
	let intVal=Number(InputBox("请输入筛选的最低值:"));
	Range("g2:j99").Clear();
	for (let rngCell of Range("d2:d11")){
		if (rngCell.Value()>=intVal){
			intRowNum++;
			rngCell.Offset(0,-3).Resize(1,4).Copy(Range(`g${intRowNum}`));
		}
	}
}

3、单元格的边界获取

Range.End(xlUp)		//向上
Range.End(xlDown)	//向下
Range.End(xlToLeft)	//向左
Range.End(xlToRight)	//向右
function test(){
	Range("c8").End(xlDown).Select();
	Range("c8").End(xlUp).Select();
	Range("c8").End(xlToLeft).Select();
	Range("c8").End(xlToRight).Select();
	Range("a1",Range("d"+Rows.Count).End(xlUp)).Select();
	a =Cells(Rows.Count,"A").End(xlUp).Row
}

4、单元格已使用区域

Range.CurrentRegion	//获取Range周围所有单元格区域
Sheet.UsedRange		//获取Sheet表所有已使用单元格区域
function test(){
	Range("g2").CurrentRegion.Select();
	Sheets(1).UsedRange.Select();
}

5、单元格的并集与交集

function test(){
	Union(Range("a2"),Range("a9")).Select();
	Intersect(Range("a1").CurrentRegion,Range("a2:d999")).Select();
	Intersect(Sheets(1).UsedRange,Range("a2:d999")).Select();
}

四、交互操作(用户自定义选择文件)

  MsoFileDialogType 可为以下 MsoFileDialogType 常量之一。
    1.msoFileDialogFilePicker 		允许用户选择文件。
    2.msoFileDialogFolderPicker	允许用户选择一个文件夹。
    3.msoFileDialogOpen  		允许用户打开文件。
    4.msoFileDialogSaveAs  		允许用户保存一个文件。

1、2只能选择文件或文件夹,而3、4则可以通过Execute方法来实际打开或者保存文件。
function 选择文件(){
	var f=Application.FileDialog(msoFileDialogFilePicker);
	f.Show();
	Console.log(f.SelectedItems(1));
	Console.log(f.SelectedItems(2));//只选择一个文件会出错
}

五、文件管理(新建、删除、复制)

新建:MkDir ("C:\NewFolder") //新建文件夹(如果存在则提示错误)
删除文件:Kill ("C:\OldFolder\OldFile.ext") //删除文件(支持同配符)
删除文件夹:RmDir("C:\OldFolder")  //删除文件夹(如果文件夹不存在,或者文件夹不为空均会提示错误)
移动文件:Name "C:\OldFolder\OldFile.ext" As "C:\NewFolder\NewFile.ext" //(暂时不可用)
复制文件:FileCopy ("C:\OldFolder\OldFile.ext", "C:\NewFolder\NewFile.ext")
function test(){
//	MkDir("D:\\WPS JS宏视频教程\\第3章\\3-22\\demo");
//	RmDir("D:\\WPS JS宏视频教程\\第3章\\3-22\\demo");
	FileCopy(
		"D:/WPS JS宏视频教程/第3章/3-22/123/demo.xlsx",
		"D:/WPS JS宏视频教程/第3章/3-22/456/999.xlsx"
			)
}

六、实例

你可能感兴趣的:(WPS-JS宏,wps,java,数据库,javascript)