找回密码
 立即注册

QQ登录

只需一步,快速开始

[已处理] V14 网格线报错

hongshanshan SpreadJS 开发认证
高级会员   /  发表于:2021-4-2 10:47  /   查看:2348  /  回复:7
1金币
升级了,V13到V14,导出excel,设置网格线,报错
image.png391250304.png

7 个回复

正序浏览
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-4-2 14:17:20
8#
请问您是想在页面上不显示网格线,导出的Excel显示网格线是吗?这边在v14.0.9测试是可以的,您可以参考这个demo。若仍未解决您的问题,麻烦您在此demo上复现您的问题。

导出.zip

3.09 MB, 下载次数: 33

回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-4-2 12:25:33
7#
hongshanshan 发表于 2021-4-2 11:29
头部显示与否,都可以做到,不是?
sheetObj.colHeaderVisible = true;
sheetObj.rowHeaderVisible = t ...

问题已复现,这边会做进一步调研,此贴为您改为保留处理,有进展会在本帖更新。
回复 使用道具 举报
hongshanshanSpreadJS 开发认证
高级会员   /  发表于:2021-4-2 11:29:27
6#
DerrickJiao 发表于 2021-4-2 11:19
这边给您提供一个思路,您在初始化的时候创建两个spread对象,一个用于展示(spread1)一个用于导出pdf( ...

头部显示与否,都可以做到,不是?
sheetObj.colHeaderVisible = true;
sheetObj.rowHeaderVisible = true;
回复 使用道具 举报
hongshanshanSpreadJS 开发认证
高级会员   /  发表于:2021-4-2 11:28:04
地板
DerrickJiao 发表于 2021-4-2 11:19
这边给您提供一个思路,您在初始化的时候创建两个spread对象,一个用于展示(spread1)一个用于导出pdf( ...

我之前用V13是已经实现了的,为啥升级到14就不能,我本来的做法,是拿到要导出的json,然后改这个json的样式,这样子不会影响画面显示json
// 原spread(包含数据内容)
                                var jsonObj = this.spread.toJSON({ includeBindingSource: true });

                                // 下载设置(取消隐藏tab,显示滚动条,行列头等。)
                                jsonObj.tabStripVisible = true;
                                jsonObj.showVerticalScrollbar = true;
                                jsonObj.showHorizontalScrollbar = true;
                                jsonObj.newTabVisible = true;

                                let sheet,sheetObj;
                                for (var i = 0; i < this.spread.sheets.length; i++) {
                                        sheet = this.spread.sheets;
                                        sheetObj = jsonObj.sheets[sheet.name()];

                                        sheetObj.colHeaderVisible = true;
                                        sheetObj.rowHeaderVisible = true;
                                        // sheetObj.gridline.showHorizontalGridline = true;
                                        // sheetObj.gridline.showVerticalGridline = true;
                                        sheetObj.zoomFactor = 1;
                                }

                                // JSON
                                var json = JSON.stringify(jsonObj);

                                // 导出excel(使用隐藏spread)
                                import('@grapecity/spread-excelio')
                                .then(ExcelIO => {
                                        var excelIo = new ExcelIO.IO();
                                        excelIo.save(json, function (blob) {
                                                saveAs(blob, fileName);
                                        }, function (e) {
                                                if (e.errorCode === 1) {
                                                        alert(e.errorMessage);
                                                }
                                        });
                                });
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-4-2 11:19:48
板凳
hongshanshan 发表于 2021-4-2 11:00
导出excel使用的,例如显示的时候不要网格线,导出后的文件要显示网格线,但是不影响画面的显示

这边给您提供一个思路,您在初始化的时候创建两个spread对象,一个用于展示(spread1)一个用于导出pdf(spread2),将spread2隐藏,让用户无感知。将spread1序列化后,在spread2上fromJSON这样就能保证两个Spread对象内容一致。

导出时,再将Spread2进行单独操作,例如添加网格线。这样,就能实现显示不要网格线,导出后的文件显示网格线。您可以想参考这篇帖子的例子
https://gcdn.grapecity.com.cn/fo ... hread&tid=84330
回复 使用道具 举报
hongshanshanSpreadJS 开发认证
高级会员   /  发表于:2021-4-2 11:00:38
沙发
DerrickJiao 发表于 2021-4-2 10:57
您好,v13和v14的网格线设置都是一样的,以下两种方式都可以设置。若任仍未解决您的问题,麻烦您提供一个复 ...

导出excel使用的,例如显示的时候不要网格线,导出后的文件要显示网格线,但是不影响画面的显示
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-4-2 10:57:27
楼主
您好,v13和v14的网格线设置都是一样的,以下两种方式都可以设置。若任仍未解决您的问题,麻烦您提供一个复现问题的demo,这边调研一下。
image.png271458129.png
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部