wps如何载入,WPS加载项 FileDialog方法使用
场景
重写打开文件方法,打开文件弹窗打开指定的目录,初始化另存为文件名等。
解决方案
打开文件
// FileDialog的值
// msoFileDialogFilePicker 3 “文件选取器”对话框。
// msoFileDialogFolderPicker 4 “文件夹选取器”对话框。
// msoFileDialogOpen 1 “打开”对话框。
// msoFileDialogSaveAs 2 “另存为”对话框。
// InitialView的值
// msoFileDialogViewDetails 2 文件以带有详细信息的列表形式显示。
// msoFileDialogViewLargeIcons 6 文件显示为大图标。
// msoFileDialogViewList 1 文件以不带详细信息的列表形式显示。
// msoFileDialogViewPreview 4 文件以列表形式显示,并在预览窗格中显示选定的文件。
// msoFileDialogViewProperties 3 文件以列表形式显示,并在一个窗格中显示选定文件的属性。
// msoFileDialogViewSmallIcons 7 文件显示为小图标。
// msoFileDialogViewThumbnail 5 文件显示为缩略图。
// msoFileDialogViewTiles 9 文件显示为平铺图标。
// msoFileDialogViewWebView 8 文件显示在 Web 视图中。
/**
* 格式对应函数
* @param {*} newName 转换的文件名称,例如test.docx
* @returns 格式对应的枚举值
*/
function returnFormatType(newName){
var typeList=[];//格式对应列表
var formatType=12;//默认转换的格式
if(wps.WpsApplication){//文字
typeList=[{
type:"ofd",
value:102
},{
type:"dot",
value:1
},{
type:"txt",
value:2
},{
type:"rtf",
value:6
},{
type:"html",
value:8
},{
type:"mht",
value:9
},{
type:"htm",
value:10
},{
type:"xml",
value:11
},{
type:"docx",
value:12
},{
type:"docm",
value:13
},{
type:"dotx",
value:14
},{
type:"dotm",
value:15
},{
type:"doc",
value:16
},{
type:"wps",
value:16
},{
type:"pdf",
value:1
},{
type:"uot",
value:1
},{
type:"uof",
value:111
}]
formatType=12;
}else if(wps.EtApplication){//表格
typeList=[{
type:"ofd",
value:102
},{
type:"pdf",
value:103
},{
type:"et",
value:65521
},{
type:"ett",
value:65522
},{
type:"uof",
value:65523
},{
type:"uos",
value:65525
},{
type:"xls",
value:-4143
},{
type:"csv",
value:6
},{
type:"dif",
value:9
},{
type:"xlt",
value:17
},{
type:"prn",
value:36
},{
type:"txt",
value:42
},{
type:"html",
value:44
},{
type:"mht",
value:45
},{
type:"xlsb",
value:50
},{
type:"xlsx",
value:51
},{
type:"xlsm",
value:52
},{
type:"xltm",
value:53
},{
type:"xltx",
value:54
}]
}else{//演示
typeList=[{
type:"dps",
value:1
},{
type:"ppt",
value:1
},{
type:"pot",
value:5
},{
type:"dpt",
value:5
},{
type:"rtf",
value:6
},{
type:"pps",
value:7
},{
type:"html",
value:12
},{
type:"htm",
value:12
},{
type:"gif",
value:16
},{
type:"jpg",
value:17
},{
type:"png",
value:18
},{
type:"bmp",
value:19
},{
type:"tif",
value:21
},{
type:"pdf",
value:32
},{
type:"xps",
value:33
},{
type:"pptx",
value:34
},{
type:"ofd",
value:102
}]
}
//根据转换名称截取后缀
let splitArr=newName.split(".")
let newType=splitArr[splitArr.length-1];
typeList.map((item)=>{//根据后缀,返回对应的枚举值
if(item.type==newType){
formatType=item.value
}
})
return formatType;
}
/**
*
* @param {*} openType 默认打开的格式,参数案例:doc或docx,默认值为所有类型的文件
*/
function openFile(openType="*",isOnlyOpenType){
let openTypeStr=`*.${openType}`;
let diyFilters=[{
Extensions:"*.docx;*.txt",
Description:"doc文档"
},{
Extensions:"*.docx;*.doc",
Description:"doc文档和docx文档"
},{
Extensions:"*.*",
Description:"所有文档"
}]
let dialog=wps.Application.FileDialog(1)
//遍历打印所有Filters;
for(let i=1;i<=dialog.Filters.Count;i++){
console.log(dialog.Filters.Item(i).Extensions,"2222",dialog.Filters.Item(i).Description)
}
diyFilters.map(item=>{
dialog.Filters.Add(item.Description,item.Extensions,1)//参数1:类型的描述;参数2:类型的后缀名,需要带上*.,多个用;分隔 ;参数3:插入的位置
})
let defaultIndex=1;
for(let i=1;i<=dialog.Filters.Count;i++){
let Extensions=dialog.Filters.Item(i).Extensions.split(";");
if(Extensions.includes(openTypeStr)){
if(Extensions.length==1){
defaultIndex=i;
break;
}else if(defaultIndex==0){
defaultIndex=i;
}
}
}
dialog.FilterIndex=defaultIndex;//默认打开的格式的Index
dialog.AllowMultiSelect=false;//单选,true为多选
// dialog.InitialView=7;//目前暂不支持设置
if(dialog.Show()){
dialog.Execute()
}
}
/**
* 另存为文件
* @param {*} InitialFileName 默认打开的格式,参数案例:doc或docx,默认值为所有类型的文件
* @param {*} openType 只打开这一种文件
*/
function saveAs(InitialFileName,openType){
let openTypeStr=`*.${openType}`;
let dialog=wps.Application.FileDialog(2)//另存为弹窗
dialog.InitialFileName=InitialFileName;
if(openType){//设置默认保存格式
let defaultIndex=1;//初始化格式
for(let i=1;i<=dialog.Filters.Count;i++){
let Extensions=dialog.Filters.Item(i).Extensions.split(";");
if(Extensions.includes(openTypeStr)){
if(Extensions.length==1){
defaultIndex=i;
break;
}else if(defaultIndex==0){
defaultIndex=i;
}
}
}
dialog.FilterIndex=defaultIndex;//默认打开的格式的Index
}
dialog.AllowMultiSelect=false;//单选,true为多选
if(dialog.Show()){
wps.Application.ActiveDocument.SaveAs2(dialog.SelectedItems.Item(1),returnFormatType(dialog.SelectedItems.Item(1)))
}else{
console.log("您点击了取消")
}
}