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

QQ登录

只需一步,快速开始

Mr.Mars

注册会员

1

主题

10

帖子

19

积分

注册会员

积分
19
  • 65

    金币

  • 1

    主题

  • 10

    帖子

最新发帖
Mr.Mars
注册会员   /  发表于:2021-12-3 14:16  /   查看:3450  /  回复:17
背景描述:
excel中有两个sheet页,名称分别未A页和B页;
其中B页中的A3单元格使用了【=A页!A3】;
使用spreadjs的导入文件功能能够正常导入,使用excelIo.save()保存到本地正常,保存后的excel可以正常打开(不报错)。

问题描述:
上述打开的excel在关闭时会提示是否需要保存。请问如何去除这种提示,在导出前是否有相关API可以使用?

补充测试情况:
如果导入的excel中没有上述描述的那种公式,则通过excelIo.save()保存到本地的excel在关闭时不会弹出是否需要保存的提示。

17 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-1-10 10:25:39
推荐
本帖最后由 Clark.Pan 于 2022-1-10 10:38 编辑

您好,这个导出的问题我在最新的office365中仍然没能重现问题,不排除老版本有问题存在,新版本Excel当做bug修复了的可能。

4.gif
image.png310190428.png
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-12-3 15:26:13
沙发
请问你是指在excel修改之后,关闭前有这个提示吗?这个是excel应用程序的行为,我们没有办法进行控制。
image.png257439574.png

如果上述不是你想要的,请再详细描述一下你的需求。
回复 使用道具 举报
Mr.Mars
注册会员   /  发表于:2021-12-3 15:47:16
板凳
导出后的excel没有修改,打开后直接关闭,然后就出现了这个提示信息。
回复 使用道具 举报
Mr.Mars
注册会员   /  发表于:2021-12-3 15:49:32
地板
Derrick.Jiao 发表于 2021-12-3 15:26
请问你是指在excel修改之后,关闭前有这个提示吗?这个是excel应用程序的行为,我们没有办法进行控制。

...

导出后的excel没有修改,打开后直接关闭,然后就出现了这个提示信息。
但是如果两个sheet页之间没有使用过上面说得那种公式的话,导出后,再打开后直接关闭就不会弹出这个提示。
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-12-3 16:07:40
5#
Mr.Mars 发表于 2021-12-3 15:49
导出后的excel没有修改,打开后直接关闭,然后就出现了这个提示信息。
但是如果两个sheet页之间没有使用 ...

请确认是否是需要保存的弹框还是需要修复的弹框。我这边根据最初的描述这边均为复现你的问题,如果没有修改过表单那么可以直接关闭,如果修改了表单就会出现保存提示。导出到Excel之后的这种保存弹窗提示行为是已经属于Excel应用上的设计了,我们这边是控制不了Excel应用的行为。
回复 使用道具 举报
Mr.Mars
注册会员   /  发表于:2021-12-3 16:24:32
6#
Derrick.Jiao 发表于 2021-12-3 16:07
请确认是否是需要保存的弹框还是需要修复的弹框。我这边根据最初的描述这边均为复现你的问题,如果没有修 ...

操作步骤:
1、使用spreadjs将本地的一个excel导入(此excel中第二个sheet页中有一个单元格里面写了【=第一个sheet页!A3】);
2、使用spreadjs的excelIo.save()功能将excel导出到本地(导出前没有编辑任何单元格);
3、导出后的excel打开,然后直接点击关闭(未进行任何操作),此时弹出了是否需要保存的提示。
希望结果:
因为在speradjs中和导出后均未编辑过,因此不希望导出的excel在关闭时弹出提示
回复 使用道具 举报
Mr.Mars
注册会员   /  发表于:2021-12-3 16:29:46
7#
Derrick.Jiao 发表于 2021-12-3 16:07
请确认是否是需要保存的弹框还是需要修复的弹框。我这边根据最初的描述这边均为复现你的问题,如果没有修 ...

下面是我写的导入方法,导入后没有编辑单元格内的内容,但是对spread设置了一些属性和字体,不知道是否会有影响。

// 导入excel
function importFile() {

        // 获取spread,用于导入方法中导入使用
        var spread = spread1;
        var fontsObj = fonts;

        // 获取文件内容,此处可改写,类型为blob
        var excelFile = $('#selectFile')[0].files[0];
        // 获取文件名称
        filename = 'filename';

        // 导入文件
        excelIo.open(excelFile, function (json) {
                var workbookObj = json;
                spread.fromJSON(workbookObj);
                // 循环所有sheet页,设置字体为宋体
                // 导入后可能会对文件原有字体有影响,当原有字体匹配不上时,会默认使用spread字体,导致导出乱码
                var sheetCount = spread.getSheetCount();
                for (var i = 0; i < sheetCount; i++) {
                        // 设置字体相关设置
                        var sheet = spread.getSheet(i);
                        var theme = sheet.currentTheme();
                        theme.bodyFont("宋体");
                        sheet.currentTheme(theme);
                        // 设置显示的列和行,通过excel中设置的打印区域
                        sheet.setRowCount(sheet.printInfo().rowEnd()+1);
                        sheet.setColumnCount(sheet.printInfo().columnEnd()+1);
                }
                spread.options.numbersFitMode = 1; // 显示不下时溢出模式
                spread.options.allowSheetReorder = false;// 禁止拖拽sheet页顺序
                spread.options.scrollbarMaxAlign = true; // 滚动条是否与活动表单的最后一行和一列对齐
                spread.options.tabEditable = false;// 禁止重命名sheet页
                spread.options.newTabVisible = false;// 禁止新增sheet页
                spread.options.tabNavigationVisible = false; // 是否显示表单选项卡导航
                spread.options.allowContextMenu = true; // 是否允许用户打开内置的上下文菜单
                spread.options.columnResizeMode = GC.Spread.Sheets.ResizeMode.split;  // 列调整宽度模式:不改变整体区域宽度,有助于保证打印区域在一定程度上不受影响
                spread.options.rowResizeMode = GC.Spread.Sheets.ResizeMode.split;     // 行调整高度模式:不改变整理区域高度,有助于保证打印区域在一定程度上不受影响

                /*  此处按需进行设置,如果没有乱码,可以不使用此部分
                var fonts = {
                        normal: fontsObj["simsun.ttf"]
                };
                GC.Spread.Sheets.PDF.PDFFontsManager.registerFont('宋体', fonts);*/

        }, function (e) {
                swal("导入失败!", e.errorMessage, "error");
        });
}

回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-12-3 16:35:47
8#
Mr.Mars 发表于 2021-12-3 16:29
下面是我写的导入方法,导入后没有编辑单元格内的内容,但是对spread设置了一些属性和字体,不知道是否会 ...

这是我操作的步骤,未能复现你描述的问题。请问你用的是wps打开还是excel打开呢?首先我们是基于Excel去设计产品,其无论是Excel还是wps,这里面的操作相当于一个黑盒,即使什么不做,保存了也有可能会提示保存。有一种原因是因为表单中存在公式,用wps或者excel打开后,这两款产品为了保证打开的内容计算正确,在后台重算了一次,因此,打开之后会提示保存他们算过的内容。这个是他们产品的设计,也是一个合理的设计,我们也边也无法修改他们产品里面的逻辑。是一个应用程序级别的行为。
demo.gif
回复 使用道具 举报
Mr.Mars
注册会员   /  发表于:2021-12-3 17:52:27
9#
Derrick.Jiao 发表于 2021-12-3 16:35
这是我操作的步骤,未能复现你描述的问题。请问你用的是wps打开还是excel打开呢?首先我们是基于Excel去 ...

我全程使用的是office2013,没有使用wps。
我看了你的步骤,和我的区别可能就是我使用js+html做的,自己写的导入按钮和导出按钮的方法,没有使用设计器去导入和导出。我目前发现的现象是:如果有公式,导出后关闭excel时就会提示,如果没有公式就不会。
回复 使用道具 举报
Mr.Mars
注册会员   /  发表于:2021-12-3 17:56:29
10#
Derrick.Jiao 发表于 2021-12-3 16:35
这是我操作的步骤,未能复现你描述的问题。请问你用的是wps打开还是excel打开呢?首先我们是基于Excel去 ...

顺便请教一下,你这个gif是用什么工具制作的?我想做一个操作步骤上传给你看
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部