鸿蒙下载并预览excel

downloadSave() {
    let context = getContext(this) as common.UIAbilityContext;
    let url = this.reportInfo?.tyrReport as string
    let urlArr: string[] = url.split('/')
    let fileName: string = Date.now()+urlArr[urlArr.length-1]
    let filePath = context.filesDir + '/' + fileName;
    console.log(JSON.stringify(filePath),'md---filePath')
    console.log(JSON.stringify(url),'md---url')
    try {
      request.downloadFile(context, {
        url: url,
        filePath: filePath
      }).then((data: request.DownloadTask) => {
        let downloadTask: request.DownloadTask = data;
        downloadTask.on('complete', () => {
          console.info('download complete');
          let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
          let arrayBuffer = new ArrayBuffer(4096000);
          let readLen = fs.readSync(file.fd, arrayBuffer);
          let buf = buffer.from(arrayBuffer, 0, readLen);
          console.info(`content of File: ${buf.toString()}`);
          fs.writeSync(file.fd, arrayBuffer);
          fs.closeSync(file);

          const documentSaveOptions = new picker.DocumentSaveOptions(); // 创建文件管理器选项实例
          documentSaveOptions.newFileNames = [fileName]; // 保存文件名(可选)
          documentSaveOptions.fileSuffixChoices = ['xlsx']; // 保存文件类型(可选)
          let uris: Array<string> = [];
          const documentViewPicker = new picker.DocumentViewPicker(); // 创建文件选择器实例
          documentViewPicker.save(documentSaveOptions).then((documentSaveResult: Array<string>) => {
            uris = documentSaveResult;
            console.info('documentViewPicker.save to file succeed and uris are:' + uris);

            let uri = uris[0];
            let file2 = fs.openSync(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
            fs.writeSync(file2.fd, arrayBuffer);
            fs.closeSync(file2);

            let url = fileUri.getUriFromPath(filePath);
            // console.log(url,'md---url')
            let want: Want = {
              uri: url,
              type: 'application/vnd.ms-excel', // 表示待打开文件的类型
              // 配置被分享文件的读写权限,例如对文件打开应用进行读写授权
              flags: wantConstant.Flags.FLAG_AUTH_WRITE_URI_PERMISSION | wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION
            };

            // 调用接口启动
            context.startAbility(want)
              .then(() => {
                console.info('Succeed to invoke startAbility.md---');
              })
              .catch((err: BusinessError) => {
                console.error(`Failed to invoke startAbility, md---code: ${err.code}, message: ${err.message}`);
              });


          }).catch((err: BusinessError) => {
            console.error(`Invoke documentViewPicker.save failed, code is ${err.code}, message is ${err.message}`);
          })
        })

        let failCallback = () => {
          console.info('Download task fail111.');
        };
        downloadTask.on('fail', failCallback);

      }).catch((err: BusinessError) => {
        console.error(`md---2downLoadFileTask failed, code is ${err.code}, message is ${err.message}`);
      });
    } catch (error) {
      console.error(`md---3downLoadFileTask failed, code is ${error.code}, message is ${error.message}`);
    }
  }
 "skills": [
          {
            "entities": [
              "entity.system.home"
            ],
            "actions": [
              "action.system.home",
              "ohos.want.action.viewData"
            ],
            "uris": [
              {
                "scheme": "file",
                "type": "application/vnd.ms-excel",
                "linkFeature":"File0pen"//表示此URI的功能为文件打开
              }
            ]
          }
        ],
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值