[001]WPS JS将工作表拆分成单独的文件
代码语言:javascript
复制function 拆分工作表成单独文件(){
let path=ThisWorkbook.Path "\";//路径
app_set(false);//取消屏幕刷新
for(let sht of Worksheets){//遍历工作表
sht.Copy();//工作表复制后成为活动工作簿
with(ActiveWorkbook){
SaveAs(path sht.Name);//默认文件类型并覆盖同名同类型文件并放在当前工作簿路径下
Close(true);//保存关闭
}
}
app_set(true);//恢复屏幕刷新
MsgBox("拆分完成",0,"逗号Office技巧")
}
function app_set(bln){//设定屏幕刷新等
with(Application){
DisplayAlerts=bln;
ScreenUpdating=bln
}
}
[002]WPS JS将多个Excel文件合并成一个工作表
代码语言:javascript
复制//按钮1点击事件处理函数,注意此代码不能保留单元格样式
function CommandButton1_Click() {
let fd = Application.FileDialog(msoFileDialogFilePicker) //创建文件对话框对象
, mysht = ThisWorkbook.ActiveSheet //绑定第一张工作表对象
, arr = []
fd.Filters.Clear() //清空文件对话框的文件过滤规则
fd.Filters.Add('Excel文件', '*.xls;*.xlsx;*.csv') //添加xls、xlsx、csv文件过滤规则
fd.Title = '请选文件'
/*利用Show方法显示对话框,如果用户选择了文件,返回值等于-1
这里的if条件是:如果用户取消,则清空B3单元格并提示信息,然后return 结束函数运行*/
if (fd.Show() != -1) {
mysht.Range('B3').Value2 = ''
return alert('亲,你没选中文件!')
}
//遍历每一项选中的文件,将文件路径写入数组arr变量
for (let i = 0; i < fd.SelectedItems.Count; i ) {
arr[i] = fd.SelectedItems.Item(i 1)
}
//将文件路径赋值到B3单元格,用换行符n 拼接每个数组元素,Value2表示二维数组取值,你可以把表格当做一个二维数组理解
mysht.Range('B3').Value2 = arr.join('n')
}
//按钮2点击事件处理函数
function CommandButton2_Click() {
let mysht = ThisWorkbook.ActiveSheet
, pth = mysht.Range('B3').Value2.split('n') //获取刚才赋值到B3单元格的文件路径,用js本身的split方法分割成数组
, data = [] //每个工作簿的数据写入到数组里
//循环打开工作簿,这里用Range.CurrentRegion方法获取以空行与空列的组合为边界的区域,然后将数据写入到arr数组变量
for (let i = 0; i < pth.length; i ) {
let wb = Workbooks.Open(pth[i])
, sht = wb.ActiveSheet
, arr = sht.Range('A1').CurrentRegion.Value2
wb.Close() //关闭工作簿
if (i > 0) arr.shift() //因为只要保留1行表头,其他都要去掉表头才行,所以循环到第二个工作簿开始就要去掉表头
data = data.concat(arr) //合并数组
}
//新建一个工作簿
let wb = Workbooks.Add()
, wbsht = wb.ActiveSheet
, fileName = ''
//如果B2单元格指定了文件名就用,如果没有指定就自动生成一个日期格式的文件名
//ThisWorkbook.Path表示当前代码工作簿的路径
if (mysht.Range('B2').Value2) {
fileName = ThisWorkbook.Path '\' mysht.Range('B2').Value2 '.xlsx'
} else {
fileName = ThisWorkbook.Path '\newFile' dateFormat('yyyymmddHHMMSS', new Date) '.xlsx'
}
//把合并的数据全部写入到刚刚新建的工作簿里
wbsht.Range('A1').Resize(data.length, data[0].length).Value2 = data
wb.SaveAs(fileName) //保存文件
}
//上网找的js通用的时间格式化函数:yyyy-mm-dd HH:MM:SS
function dateFormat(fmt, date) {
let ret
const opt = {
'y ': date.getFullYear().toString(), // 年
'm ': (date.getMonth() 1).toString(), // 月
'd ': date.getDate().toString(), // 日
'H ': date.getHours().toString(), // 时
'M ': date.getMinutes().toString(), // 分
'S ': date.getSeconds().toString() // 秒
// 有其他格式化字符需求可以继续添加,必须转化成字符串
}
for (let k in opt) {
ret = new RegExp('(' k ')').exec(fmt)
if (ret) {
fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, '0')))
}
}
return fmt
}