找回密码
 立即注册

QQ登录

只需一步,快速开始

杨永康
初级会员   /  发表于:2022-12-23 14:00  /   查看:1721  /  回复:9
1金币
const spread = this.designer.getWorkbook();
const excelIo = new GC.Spread.Excel.IO()
let blob = new Blob([this.detailData.ssJsonFile.content]);
excelIo.open(blob, function(json) {
  spread.fromJSON(json)
}, function(e) {
}, {})

最佳答案

查看完整内容

在请求的时候有没有设置esponseType:"blob" ,添加后再测试下。 这里有个前后端解决方案,您参考对比下代码: https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=90503&fromuid=59119

9 个回复

倒序浏览
最佳答案
最佳答案
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-12-23 14:00:11
来自 9#
在请求的时候有没有设置esponseType:"blob" ,添加后再测试下。
这里有个前后端解决方案,您参考对比下代码:
https://gcdn.grapecity.com.cn/fo ... 3&fromuid=59119

image.png360584716.png




回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-12-23 16:42:57
2#
您好,
您遇到什么问题了呢?标题有字数限制,请在详情中将问题描述清楚。
另,前端接收blob流后可以使用open方法进行加载,代码来看没什么问题,这篇文章您可以参考下:
https://gcdn.grapecity.com.cn/fo ... &extra=page%3D1
回复 使用道具 举报
杨永康
初级会员   /  发表于:2022-12-23 16:53:23
3#
我把代码改了下,我注释掉的那部分代码文件能正常下载,打开也是正常的,然后open的错误异步里提示Incorrect+file+format
  1.        const { blob, filename } = await getFileBlob({ fileId:this.detailData.excelDocId });
  2.         // let url = window.URL.createObjectURL(new Blob([blob])) // 将获取的文件转化为blob格式
  3.         // let a = document.createElement('a'); // 此处向下是打开一个储存位置
  4.         // a.style.display = 'none';
  5.         // a.href = url;
  6.         // a.setAttribute('download',"excel.json");
  7.         // document.body.appendChild(a);
  8.         // a.click();//点击下载
  9.         // document.body.removeChild(a);// 下载完成移除元素
  10.         // window.URL.revokeObjectURL(url);// 释放掉blob对象
  11.         const blobData = new Blob([blob])
  12.         const spread = this.designer.getWorkbook();
  13.         spread.suspendPaint();
  14.         const excelIo = new ExcelIo.IO()
  15.         excelIo.open(blobData, function(json) {
  16.           spread.fromJSON(json)
  17.         }, function(e) {
  18.           console.log(e)
  19.         }, {})
  20.         spread.suspendPaint();
复制代码
回复 使用道具 举报
杨永康
初级会员   /  发表于:2022-12-23 16:57:02
4#
是因为我引入的这俩不对吗
import * as ExcelIo from "@grapecity/spread-excelio"
import FileSaver from 'file-saver';
回复 使用道具 举报
杨永康
初级会员   /  发表于:2022-12-23 17:38:06
5#
后端返回的是type: "application/json"这种格式的blob
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-12-23 18:01:37
6#
本帖最后由 Lynn.Dou 于 2022-12-23 18:02 编辑

最后一句代码应是 spread.resumePaint() ,您修改后看下问题是否解决:
image.png572222594.png
另外您检查下package.json中SpreadJS各资源的版本,需保持版本一致。
回复 使用道具 举报
杨永康
初级会员   /  发表于:2022-12-24 14:08:36
7#
都检查了没有问题还是不行
回复 使用道具 举报
杨永康
初级会员   /  发表于:2022-12-24 14:15:46
8#
这是我下载的后台给返回的blob

excel.json

4.98 MB, 下载次数: 146

回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-1-3 18:52:16
10#
不知道楼主通过上述代码是否解决了问题,如果没有的话,欢迎进行跟帖沟通
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部