请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

zwbd_suki

金牌服务用户

6

主题

23

帖子

69

积分

金牌服务用户

积分
69
最新发帖
zwbd_suki
金牌服务用户   /  发表于:2025-3-31 13:40  /   查看:155  /  回复:12
本帖最后由 zwbd_suki 于 2025-3-31 13:41 编辑

我页面的excel文件从服务器来,为什么我单独上传到服务器的excel打开就报"文件格式错误"的错误,但是从spreadjs生成的excel文件打开就不会有这个问题。但是我单独上传到服务器的excel可以正常打开,也可以在设计器打开,就是通过spread.open打开会报错 image.png234598998.png image.png319737548.png

12 个回复

倒序浏览
Matthew.Xue
超级版主   /  发表于:2025-3-31 15:59:24
沙发
您好,您讲的用spreadjs生成的excel文件是什么格式的?
看到您使用了open方法,这个方法只能打开sjs格式的文件.
对于xlsx格式,您需要使用import方法导入。
您可以参考以下demo:从服务端打开三种类型的文件
回复 使用道具 举报
zwbd_suki
金牌服务用户   /  发表于:2025-3-31 16:20:25
板凳
我改成了      function loadSpreadJs(fdId) {
                    var url = '${LUI_ContextPath}/zwbdt/spreadjs/spreadjs_supply/zwbdtSpreadJsSupply.do?method=getTableData&fdId=' + encodeURIComponent(fdId);

                    fetch(url)
                        .then((response) => {
                            if (!response.ok) {
                                throw new Error('Network response was not ok ' + response.statusText);
                            }
                            return response.blob();
                        })
                        .then((blob) => {
                            // 创建新的 Blob 对象,设置 MIME 类型为 application/zip
                            let newBlob = new Blob([blob], { type: 'application/zip' });
                            // 打开文件
                            spread.import(newBlob, function () {
                                console.log('文件导入成功');
                            }, function (e) {
                                console.log('错误', e); // 错误回调
                            });
                        })
                        .catch((error) => {
                            console.error('网络请求或文件处理失败:', error);
                        });
                }
用import导入,如果我用Spreadjs生成的excel文件,就可以通过这个方法初始化打开,但是如果是我本地的excel文件就没办法打开,会报错:文件格式错误,但是两个excel格式都是.xlsx
image.png276080626.png
回复 使用道具 举报
zwbd_suki
金牌服务用户   /  发表于:2025-3-31 16:26:07
地板
Matthew.Xue 发表于 2025-3-31 15:59
您好,您讲的用spreadjs生成的excel文件是什么格式的?
看到您使用了open方法,这个方法只能打开sjs格式的 ...

我改成了      function loadSpreadJs(fdId) {
                    var url = '${LUI_ContextPath}/zwbdt/spreadjs/spreadjs_supply/zwbdtSpreadJsSupply.do?method=getTableData&fdId=' + encodeURIComponent(fdId);

                    fetch(url)
                        .then((response) => {
                            if (!response.ok) {
                                throw new Error('Network response was not ok ' + response.statusText);
                            }
                            return response.blob();
                        })
                        .then((blob) => {
                            // 创建新的 Blob 对象,设置 MIME 类型为 application/zip
                            let newBlob = new Blob([blob], { type: 'application/zip' });
                            // 打开文件
                            spread.import(newBlob, function () {
                                console.log('文件导入成功');
                            }, function (e) {
                                console.log('错误', e); // 错误回调
                            });
                        })
                        .catch((error) => {
                            console.error('网络请求或文件处理失败:', error);
                        });
                }
用import导入,如果我用Spreadjs生成的excel文件,就可以通过这个方法初始化打开,但是如果是我本地的excel文件就没办法打开,会报错:文件格式错误,但是两个excel格式都是.xlsx
回复 使用道具 举报
Matthew.Xue
超级版主   /  发表于:2025-3-31 17:53:08
5#
是否可以将报错的那个xlsx文件上传呢,我这边帮您看一下原因?
回复 使用道具 举报
zwbd_suki
金牌服务用户   /  发表于:2025-4-1 09:00:46
6#
Matthew.Xue 发表于 2025-3-31 17:53
是否可以将报错的那个xlsx文件上传呢,我这边帮您看一下原因?

不是某一个excel文件,是所有的excel文件放到服务器,用     function loadSpreadJs(fdId) {
                    var url = '${LUI_ContextPath}/zwbdt/spreadjs/spreadjs_supply/zwbdtSpreadJsSupply.do?method=getTableData&fdId=' + encodeURIComponent(fdId);

                    fetch(url)
                        .then((response) => {
                            if (!response.ok) {
                                throw new Error('Network response was not ok ' + response.statusText);
                            }
                            return response.blob();
                        })
                        .then((blob) => {
                            // 创建新的 Blob 对象,设置 MIME 类型为 application/zip
                            let newBlob = new Blob([blob], {type:'application/zip'});
                            // 打开文件
                            spread.import(newBlob, function () {
                                console.log('文件导入成功');
                            }, function (e) {
                                console.log('错误', e); // 错误回调
                            });
                        })
                        .catch((error) => {
                            console.error('网络请求或文件处理失败:', error);
                        });
                }
解析都会报错,除了用spreadjs保存excel格式服务器的才可以打开,而且文件的大小也变了。同一个excel直接放到服务器31KB,用spreadjs打开excel再保存到服务器就是20KB
回复 使用道具 举报
Matthew.Xue
超级版主   /  发表于:2025-4-1 09:29:56
7#
zwbd_suki 发表于 2025-4-1 09:00
不是某一个excel文件,是所有的excel文件放到服务器,用     function loadSpreadJs(fdId) {
           ...

您代码有两处有问题的地方,第一:
  1. let newBlob = new Blob([blob], {type:'application/zip'});
复制代码
xlsx文件的类型并不是zip,这里建议写new File:
  1. let file = new File([blob], "test.xlsx")
  2. spread.import(file)
复制代码

第二,import方法中,第四个参数是option,其中有一个fileType参数,对于xlsx文件,需要传入excel类型:
  1. spread.import(file, function() {}, function() {}, {
  2.                 fileType: GC.Spread.Sheets.FileType.excel
  3.             })
复制代码
以上代码在我发的demo中都有,建议认真看一下。
回复 使用道具 举报
zwbd_suki
金牌服务用户   /  发表于:2025-4-1 13:24:13
8#
Matthew.Xue 发表于 2025-4-1 09:29
您代码有两处有问题的地方,第一:
xlsx文件的类型并不是zip,这里建议写new File:

我改成你说的方法之后,打开还是报错,之前可以成功的excel打开也是这样没有内容了 image.png368621215.png
image.png836853027.png
回复 使用道具 举报
Matthew.Xue
超级版主   /  发表于:2025-4-1 13:40:31
9#
zwbd_suki 发表于 2025-4-1 13:24
我改成你说的方法之后,打开还是报错,之前可以成功的excel打开也是这样没有内容了

既然已经进入了错误回调,可以看一下报错信息;另外您确定文件格式是xlsx吗,文件是否可以正常用excel或者wps打开?
如果仍然不能解决您遇到的问题,您可以上传一个可复现的demo,我帮您看一下,目前这样确实没有什么头绪。
回复 使用道具 举报
zwbd_suki
金牌服务用户   /  发表于:2025-4-1 13:51:24
10#
Matthew.Xue 发表于 2025-4-1 13:40
既然已经进入了错误回调,可以看一下报错信息;另外您确定文件格式是xlsx吗,文件是否可以正常用excel或 ...

image.png700172118.png 我的excel文件可以正常打开的,这是我的后台代码 image.png353756713.png
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部