找回密码
 立即注册

QQ登录

只需一步,快速开始

18744279242

初级会员

13

主题

33

帖子

254

积分

初级会员

积分
254

微信认证勋章

18744279242
初级会员   /  发表于:2017-8-7 10:54  /   查看:4454  /  回复:7
本帖最后由 18744279242 于 2017-8-7 13:41 编辑

参照http://runjs.cn/code/imqwbthf出错

代码:
  1. function setSupImage(){
  2.     var sheet = spread.getActiveSheet();
  3.     var row = sheet.getActiveRowIndex(), col = sheet.getActiveColumnIndex();
  4.     var value = sheet.getValue(row, col);
  5.     if(value){
  6.         var cellRect = sheet.getCellRect(row, col);
  7.         var style = sheet.getActualStyle(row, col);
  8.             sheet.getCell(row, col).cellType(new HTMLCellType()).value('<span>5</span>');
  9.     }
  10. }


  11. function HTMLCellType() {}
  12. HTMLCellType.prototype = new GcSpread.Sheets.TextCellType;
  13. HTMLCellType.prototype.paint = function (ctx, value, x, y, w, h, style, context) {
  14.     var DOMURL = window.URL || window.webkitURL || window;
  15.     var cell = context.sheet.getCell(context.row, context.col);
  16.     var img = cell.tag();
  17.     if (img) {
  18.                         try{
  19.         ctx.save();
  20.         ctx.rect(x, y, w, h);
  21.         ctx.clip();
  22.         ctx.drawImage(img, x + 2, y + 2)
  23.         ctx.restore();
  24.         cell.tag(null);
  25.                           return;
  26.                         }
  27.                         catch(err){
  28.                                 GcSpread.Sheets.CustomCellType.prototype.paint.apply(this, [ctx, "#HTMLError", x, y, w, h, style, context])
  29.         cell.tag(null);
  30.         return;
  31.                         }
  32.     }
  33.     var svgPattern = '<svg xmlns="http://www.w3.org/2000/svg" width="{0}" height="{1}">' +
  34.         '<foreignObject width="100%" height="100%"><div xmlns="http://www.w3.org/1999/xhtml" style="font:{2}">{3}</div></foreignObject></svg>';

  35.     var data = svgPattern.replace("{0}", w).replace("{1}", h).replace("{2}", style.font).replace("{3}", value);
  36.     var doc = document.implementation.createHTMLDocument("");
  37.     doc.write(data);
  38.     // Get well-formed markup
  39.     data = (new XMLSerializer()).serializeToString(doc.body.children[0]);

  40.     img = new Image();
  41.     //var svg = new Blob([data], {type: 'image/svg+xml;charset=utf-8'});
  42.     //var url = DOMURL.createObjectURL(svg);
  43.     //img.src = url;
  44.     img.src = 'data:image/svg+xml;base64,'+ btoa(data);
  45.     console.log('data:image/svg+xml;base64,'+ btoa(data));
  46.     cell.tag(img);
  47.     img.onload = function () {
  48.         context.sheet.repaint(new GcSpread.Sheets.Rect(x, y, w, h));
  49.     }

  50. };
复制代码

spreadjs 导入顺序:
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%-- <%@include file="/web/pages/spreadJS/ribbonKoto.jsp"%> --%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml">
  5.   <head>
  6.     <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  7.     <meta name="pages culture" content="zh-cn" />
  8.   </head>
  9.   
  10.   <body>
  11. <script src="http://demo.gcpowertools.com.cn/SpreadJS/TutorialSampleV9/external/external/jquery-1.8.2.min.js" type="text/javascript"></script>
  12.         <%-- <script src="${ctx}/js/spreadJS/bootstrap.min.js"></script> --%>
  13.     <script src="${ctx}/web/pages/lib/jquery-ui/js/jquery-ui-1.10.3.custom.js"></script>
  14.     <script src="${ctx}/web/pages/lib/knockout-2.3.0.js"></script>
  15.     <script src="${ctx}/web/pages/lib/gcui.js"></script>
  16.     <script src="${ctx}/web/pages/lib/spread/gc.spread.sheets.all.10.2.0.min.js"></script>
  17.     <script type="text/javascript" src="http://demo.gcpowertools.com.cn/SpreadJS/TutorialSampleV9/external/spreadjs/gcspread.sheets.all.9.40.20161.0.min.js"></script>
  18.     <script src="${ctx}/web/pages/lib/spread/resources/zh/gc.spread.sheets.resources.zh.10.2.0.min.js"></script>
  19.     <script src="${ctx}/web/pages/lib/spread/pluggable/gc.spread.sheets.print.10.2.0.min.js"></script>
  20.     <script src="${ctx}/web/pages/lib/zTreeStyle/js/jquery.ztree.all-3.5.min.js"></script>
  21.     <script src="${ctx}/web/pages/lib/spread/interop/gc.spread.excelio.10.2.0.min.js"></script>
  22.     <script src="${ctx}/web/pages/lib/FileSaver.min.js"></script>


  23.     <script src="${ctx}/web/pages/common/resources.js"></script>
  24.     <script src="${ctx}/web/pages/common/resources.cn.js"></script>


  25.     <script src="${ctx}/web/pages/widgets/colorpicker/colorpicker.js"></script>
  26.     <script src="${ctx}/web/pages/widgets/fontpicker/fontpicker.js"></script>
  27.     <script src="${ctx}/web/pages/widgets/comboframe/comboframe.js"></script>
  28.     <script src="${ctx}/web/pages/widgets/borderpicker/borderpicker.js"></script>
  29.     <script src="${ctx}/web/pages/widgets/sliderpanel/sliderpanel.js"></script>


  30.     <script src="${ctx}/web/pages/common/app.js"></script>
  31.     <script src="${ctx}/web/pages/common/util.js"></script>
  32.     <script src="${ctx}/web/pages/common/asyncLoader.js"></script>
  33.     <script src="${ctx}/web/pages/common/metadata.js"></script>
  34.     <script src="${ctx}/web/pages/common/colorHelper.js"></script>


  35.     <script src="${ctx}/web/pages/spreadWrapper/spreadMeta.js"></script>
  36.     <script src="${ctx}/web/pages/spreadWrapper/spreadWrapper.js"></script>
  37.     <script src="${ctx}/web/pages/spreadWrapper/spreadActions.js"></script>
  38.     <script src="${ctx}/web/pages/spreadWrapper/actions.js"></script>
  39.     <script src="${ctx}/web/pages/spreadWrapper/ceUtility.js"></script>
  40.     <script src="${ctx}/web/pages/spreadWrapper/spreadUtility.js"></script>


  41.     <script src="${ctx}/web/pages/dialogs/baseDialog.js"></script>
  42.     <script src="${ctx}/web/pages/dialogs/dialogs.js"></script>
  43.     <script src="${ctx}/web/pages/dialogs/dialogs2.js"></script>
  44.     <script src="${ctx}/web/pages/formatDialog/formatDialog.js"></script>


  45.     <script src="${ctx}/web/pages/ribbon/ribbon.js"></script>
  46.     <script src="${ctx}/web/pages/formulaBar/formulaBar.js"></script>
  47.     <script src="${ctx}/web/pages/statusBar/statusBar.js"></script>
  48.     <script src="${ctx}/web/pages/contextMenu/contextMenu.js"></script>
  49.     <script src="${ctx}/web/pages/fileMenu/fileMenu.js"></script>
  50.    

  51.     <script type="text/javascript" src="${ctx}/js/spreadJS/pako.js"></script>
  52.     <script type="text/javascript" src="${ctx}/js/spreadJS/license.js"></script>
  53.         <script type="text/javascript" src="${ctx}/js/spreadJS/JsBarcode.all.js"></script>
  54.         <script type="text/javascript" src="${ctx}/js/spreadJS/Spread.js"></script>
  55.         <script type="text/javascript" src="${ctx}/js/html2canvas/html2canvas.js"></script>

  56. </body>
  57. </html>
复制代码

异常信息:
捕获.PNG

7 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-8-7 16:47:34
沙发
您好,看您引用的V10的版本,但是您参考的demo是V9版本的,里面很多写法都是V9版本的写法。
http://runjs.cn/detail/j4yfm4hs这个地址是V10版本的demo,您可以进行参考。
回复 使用道具 举报
18744279242
初级会员   /  发表于:2017-8-7 17:24:03
板凳
ClarkPan 发表于 2017-8-7 16:47
您好,看您引用的V10的版本,但是您参考的demo是V9版本的,里面很多写法都是V9版本的写法。
http://runjs. ...

哦,明白了。
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-8-7 18:43:25
地板

那您先参照demo,如果实现起来有什么问题欢迎再问。
回复 使用道具 举报
18744279242
初级会员   /  发表于:2017-8-8 10:10:07
5#
本帖最后由 18744279242 于 2017-8-8 11:02 编辑
ClarkPan 发表于 2017-8-7 18:43
那您先参照demo,如果实现起来有什么问题欢迎再问。

这个demo是创建了新的spread对象,如果我想在已有的spread对象该怎么做
我这样写只有单元格宽高变了,我想要的角标不显示,而且生成base64码还是错误的。

  1. var spread;
  2. var sheetArray=[]; // 添加sheet页的详细信息(存数据库)
  3. var flag = 1;
  4. var totalPage = 1; // 总页数
  5. var pageNum = 1; // 当前页数
  6. var itemList = []; // 需要传入后台并插入到字表的sheetList
  7. var zbid; // 主表id
  8. var GC;
  9. var pageType = "1";
  10. (function (GC) {
  11.     (function (Spread) {
  12.     (function (Sheets) {
  13.         (function (designer) {
  14.             (function (index) {
  15.                 'use strict';

  16.                 var needSuspend;

  17.                 function updateLayout() {
  18.                     $(".content").css('height', $(".content").children('.fill-spread-content').height());
  19.                     $(".header").css("width", $(window).width() + "px");
  20.                     if ($(".ribbon-bar").data("gcui-gcuiribbon")) {
  21.                         $(".ribbon-bar").data("gcui-gcuiribbon").updateRibbonSize();
  22.                     }
  23.                     spread = designer.wrapper.spread;
  24.                     if (spread && spread.isPaintSuspended()) {
  25.                         spread.resumePaint();
  26.                         spread.refresh();
  27.                         needSuspend = true;
  28.                     }
  29.                 }
  30.                 var _windowResizeTimer = null;

  31.                 function _doWindowResize() {
  32.                     if (_windowResizeTimer) {
  33.                         window.clearTimeout(_windowResizeTimer);
  34.                     }
  35.                     _windowResizeTimer = window.setTimeout(function () {
  36.                         updateLayout();
  37.                         _windowResizeTimer = null;
  38.                         if (needSuspend) {
  39.                             needSuspend = false;
  40.                             window.setTimeout(function() {
  41.                                 designer.wrapper.spread.suspendPaint();
  42.                             }, 300);
  43.                         }
  44.                     }, 100); //now delay 100ms to resize designer
  45.                 }
  46.                 ;

  47.                 $(document).ready(function () {
  48.                     designer.loader.loadContent();
  49.                     $(window).resize(_doWindowResize);
  50.                     $(window).resize();
  51.                     
  52.                     var jsonFileName = $("#updateId",window.opener.document).val(); // 文件名
  53.                         zbid = jsonFileName; // 主表id就是文件名
  54.                     // 读取json文件
  55.                     $.getJSON("../modelCertificate/model/certificate/" + jsonFileName + ".ssjson?_t=" + new Date().getTime(), function (data) {
  56.                             spread = designer.wrapper.spread;
  57.                         spread.fromJSON(data);
  58.                             var sheet = spread.getActiveSheet();
  59.                             sheet.setColumnWidth(1,300);
  60.                             sheet.setRowHeight(1,150);
  61.                             sheet.getCell(1, 1).cellType(new HTMLCellType()).value('<sub>5</sup>');
  62.                         spread.addCustomFunction(carryF);
  63.                         spread.addCustomFunction(effectivenumF);
  64.                         getPage(spread.sheets[1]); // 原始记录页 获得当前页和总页数
  65.                     });
  66.                     $("#verticalSplitter").draggable({
  67.                         axis: "y",
  68.                         containment: "parent",
  69.                         scroll: false,
  70.                         zIndex: 100,
  71.                         stop: function (event, ui) {
  72.                             var $this = $(this), top = $this.offset().top, offset = top - $(".header").height(), $content = $(".content .fill-spread-content");

  73.                             // adjust size of related items
  74.                             $("#formulaBarText").css({ height: (20 + offset) }); // 20: original height of formulaBarText
  75.                             $content.css({ top: top + 10 }); // 10: height of the space for verticalSplitter
  76.                             $content.parent().css({ height: $content.height() });
  77.                             designer.wrapper.spread.refresh();
  78.                         }
  79.                     });

  80.                     function disableDragDrop(dataTransfer) {
  81.                         if (dataTransfer) {
  82.                             dataTransfer.effectAllowed = "none";
  83.                             dataTransfer.dropEffect = "none";
  84.                         }
  85.                     }
  86.                     window.addEventListener("dragenter", function (e) {
  87.                         if (e.target.id != dropzoneId) {
  88.                             e.preventDefault();
  89.                             disableDragDrop(e.dataTransfer);
  90.                         }
  91.                     }, false);
  92.                     window.addEventListener("dragover", function (e) {
  93.                         e = e || event;
  94.                         e.preventDefault();
  95.                         disableDragDrop(e.dataTransfer);
  96.                     }, false);
  97.                     window.addEventListener("drop", function (e) {
  98.                         e = e || event;
  99.                         e.preventDefault();
  100.                         disableDragDrop(e.dataTransfer);
  101.                     }, false);
  102.                 });

  103.                 designer.loader.ready(function () {
  104.                     //To Fix the designer resize performance issues.
  105.                     $(window).unbind("resize.gcuiribbon");
  106.                     $("#verticalSplitter").show();
  107.                 });
  108.             })(designer.index || (designer.index = {}));
  109.             var index = designer.index;
  110.         })(Sheets.designer || (Sheets.designer = {}));
  111.         var designer = Sheets.designer;
  112.     })(Spread.Sheets || (Spread.Sheets = {}));
  113.         var Sheets = Spread.Sheets;
  114.     })(GC.Spread || (GC.Spread = {}));
  115.     var Spread = GC.Spread;
  116. })(GC || (GC = {}));

  117. /*给有下拉列表框的 汉字隐藏框赋值*/
  118. function addSelectText(selectId, textId) {
  119.         var text = $('#' + selectId + ' option:selected').text();//
  120.         var val = $('#' + selectId + ' option:selected').val();//
  121.         if (val != "") {
  122.                 $("#" + textId).val(text);
  123.         } else {
  124.                 $("#" + textId).val("");
  125.         }
  126. }

  127. function HTMLCellType() {}
  128. HTMLCellType.prototype = new GC.Spread.Sheets.CellTypes.Text;
  129. HTMLCellType.prototype.paint = function (ctx, value, x, y, w, h, style, context) {
  130. var DOMURL = window.URL || window.webkitURL || window;
  131. var cell = context.sheet.getCell(context.row, context.col);
  132. var img = cell.tag();
  133. if (img) {
  134.                 try{
  135.     ctx.save();
  136.     ctx.rect(x, y, w, h);
  137.     ctx.clip();
  138.     ctx.drawImage(img, x + 2, y + 2)
  139.     ctx.restore();
  140.     cell.tag(null);
  141.                   return;
  142.                 }
  143.                 catch(err){
  144.                         GC.Spread.Sheets.CustomCellType.prototype.paint.apply(this, [ctx, "#HTMLError", x, y, w, h, style, context])
  145.     cell.tag(null);
  146.     return;
  147.                 }
  148. }
  149. var svgPattern = '<svg xmlns="http://www.w3.org/2000/svg" width="{0}" height="{1}">' +
  150.     '<foreignObject width="100%" height="100%"><div xmlns="http://www.w3.org/1999/xhtml" style="font:{2}">{3}</div></foreignObject></svg>';

  151. var data = svgPattern.replace("{0}", w).replace("{1}", h).replace("{2}", style.font).replace("{3}", value);
  152. var doc = document.implementation.createHTMLDocument("");
  153. doc.write(data);
  154. // Get well-formed markup
  155. data = (new XMLSerializer()).serializeToString(doc.body.children[0]);
  156. console.log(data);
  157. img = new Image();
  158. //var svg = new Blob([data], {type: 'image/svg+xml;charset=utf-8'});
  159. //var url = DOMURL.createObjectURL(svg);
  160. //img.src = url;
  161. img.src = 'data:image/svg+xml;base64,'+ window.btoa(data);
  162. console.log('data:image/svg+xml;base64,'+ window.btoa(data));
  163. cell.tag(img);
  164. img.onload = function () {
  165.     context.sheet.repaint(new GC.Spread.Sheets.Rect(x, y, w, h));
  166. }

  167. };

复制代码
输出data:<svg xmlns="http://www.w3.org/2000/svg" width="301" height="151"><foreignObject width="100%" height="100%"><div xmlns="http://www.w3.org/1999/xhtml" style="font:14.6667px " times="" new="" roman""="">null</div></foreignObject></svg>
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-8-8 11:44:10
6#
您好,获取已有的spread对象可以使用:var spread = GC.Spread.Sheets.findControl(document.getElementById("ss"));来获取
其中ss为承载spreadjs的div的id。
这里您写错了<sub>5</sup> 应该是<sup>5</sup>
如果还是不行麻烦您提供一个能够运行的demo,我帮您调试下,光一段代码我这边也不好重现,只能逐行去看这样效率太低了,而且容易出错。
回复 使用道具 举报
18744279242
初级会员   /  发表于:2017-8-8 11:45:55
7#
本帖最后由 18744279242 于 2017-8-8 11:48 编辑
ClarkPan 发表于 2017-8-8 11:44
您好,获取已有的spread对象可以使用:var spread = GC.Spread.Sheets.findControl(document.getElementById ...

嗯,抱歉我刚了解spreedjs。麻烦你了。

回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-8-8 12:06:06
8#
18744279242 发表于 2017-8-8 11:45
嗯,抱歉我刚了解spreedjs。麻烦你了。

没关系的,我们的工作就是帮助您解决遇到的任何产品问题。如果遇到问题能发一个demo那是最好的,也是处理起来效率最高的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部