找回密码
 立即注册

QQ登录

只需一步,快速开始

liyx

金牌服务用户

12

主题

44

帖子

114

积分

金牌服务用户

积分
114
liyx
金牌服务用户   /  发表于:2016-9-12 10:35  /   查看:6572  /  回复:12
以浮动元素的方式向excel添加了图片,图片显示、保存正常,但导出时(无论是pdf还是excel格式)图片丢失,请问如何解决?

注:导出代码基于 ExcelIOSample实现。。。

11 个回复

倒序浏览
CCKan
银牌会员   /  发表于:2016-9-12 14:08:06
沙发
你好,SpreadJS 目前只支持 src 为 Base64 string 的picture 导出到 Excel。因为 url 引用牵扯到跨域问题等安全问题。
回复 使用道具 举报
liyx
金牌服务用户   /  发表于:2016-9-12 14:34:08
板凳
CCKan 发表于 2016-9-12 14:08
你好,SpreadJS 目前只支持 src 为 Base64 string 的picture 导出到 Excel。因为 url 引用牵扯到跨域问题等 ...

好吧,看来要转base64存图片了。
回复 使用道具 举报
liyx
金牌服务用户   /  发表于:2016-9-12 16:39:56
地板
如截图,图片内容已经是 base64存储的了,但导出的文件还是不包含图片,如何处理?
QQ截图20160912163835.jpg
回复 使用道具 举报
Helen
高级会员   /  发表于:2016-9-12 17:37:13
5#
liyx 发表于 2016-9-12 16:39
如截图,图片内容已经是 base64存储的了,但导出的文件还是不包含图片,如何处理?

下面是之前成功导出设置图片的代码,您可以参考一下写法,再根据您实际情况调整代码:
for(var i=4;i<tableRow+4;i++)
      {
            picRows=sheet.getValue(i,0).split(".")
            sheet.setValue(i,0,picRows[0])
            startRow = i;
            var url = "./Resources/Pictures/" + picRows[0] + ".png";
            var pic = sheet.addPicture(picRows[0], undefined, startRow, 0, i + 1, 1, 0, 0);
            var loadImage = function (url, picture) {
                var imgElement = $(document.createElement("img"));
                imgElement.bind("load", function () {
                    var canvas = document.createElement('CANVAS');
                    var ctx = canvas.getContext('2d');
                    var dataURL;
                    canvas.height = this.height;
                    canvas.width = this.width;
                    ctx.drawImage(this, 0, 0);
                    dataURL = canvas.toDataURL("image/png");
                    picture.src(dataURL);
                });
                imgElement[0].src = url;
            }
            loadImage(url, pic);

            if(parseInt(picRows[1])>1)
            {
                  sheet.addSpan(i, 0, parseInt(picRows[1]), 1);
                  i=i+parseInt(picRows[1])-1;               
                  pic.pictureStretch(GcSpread.Sheets.ImageLayout.Zoom);
                  varPoint=new GcSpread.Sheets.Point(0,y);
                  pic.position(varPoint);
                  pic.height(parseInt(picRows[1])*40-18);
                  y=y+parseInt(picRows[1])*40;
            }else{
                  sheet.getRow(i).height(68);
                  pic.pictureStretch(GcSpread.Sheets.ImageLayout.Zoom);
                  pic.height(50);               
                  varPoint=new GcSpread.Sheets.Point(0,y);
                  pic.position(varPoint);
                  y=y+68;
            }
      }
回复 使用道具 举报
CCKan
银牌会员   /  发表于:2016-9-12 17:44:02
6#
我试了一下可以呀:


            var image = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABaSURBVDhPY/z//z8D**IyAiWBKphBAtgAUxQGgPANIMAMhsdYDUAmwZchtDOC8SCgTcA5DfcgUAEoNwFo7GAPQxwJVtsYYHVBdgU4gpInF5A1oBLMwMDAwMApuAtD6Z7YxQAAAAASUVORK5CYII=";
            var picture = sheet.addPicture("pic1", image,
                2, 2, 3, 3);
回复 使用道具 举报
liyx
金牌服务用户   /  发表于:2016-9-12 18:32:52
7#
有点乌龙,刚刚确认了下:
1. base64图片可以导出到excel,url图片不能够导出到excel
2. bas64/url图片都不能导出到pdf
回复 使用道具 举报
liyx
金牌服务用户   /  发表于:2016-9-13 11:42:11
8#
CCKan 发表于 2016-9-12 14:08
你好,SpreadJS 目前只支持 src 为 Base64 string 的picture 导出到 Excel。因为 url 引用牵扯到跨域问题等 ...

Hi, 导出包含 base64 图片的excel到pdf是不支持么?   11月发布的纯前端导出控件会修复么?
回复 使用道具 举报
CCKan
银牌会员   /  发表于:2016-9-13 11:47:42
9#
图片导出到 PDF 目前还没有支持。 11发布的纯前端导入导出控件只支持 xlsx 格式。
你可以向我们的产品经理提需求,我们会评估需求并考虑在后续版本中支持导出图片到 PDF
回复 使用道具 举报
CCKan
银牌会员   /  发表于:2016-9-13 11:49:44
10#
目前只能曲线救国,先导出到 Excel 再转成 PDF
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部