找回密码
 立即注册

QQ登录

只需一步,快速开始

dept_estate_dev

初级会员

35

主题

115

帖子

326

积分

初级会员

积分
326

[已处理] V10导出功能问题

dept_estate_dev
初级会员   /  发表于:2016-12-6 16:23  /   查看:6064  /  回复:13
导出之后的excel无法看到sheet页,且数据未空导出后的excel: export.xlsx (7.15 KB, 下载次数: 0)

13 个回复

倒序浏览
dept_estate_dev
初级会员   /  发表于:2016-12-6 16:37:17
沙发
现在导出可以了,可是导出的sheet没有标题,这个问题大概什么时候可以修复呢?
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-12-6 17:59:19
板凳
再引用spread js后添加如下方法,判断是否导出列头的方法,你可以根据业务具体在修改下。
导出多少行列头也可以根据情况修改。

  1.         var oldToJSON = GC.Spread.Sheets.Workbook.prototype.toJSON;
  2.         GC.Spread.Sheets.Workbook.prototype.toJSON = function(options){
  3.             var json = oldToJSON.call(this, options);

  4.             var tempSpread = new GC.Spread.Sheets.Workbook();
  5.             tempSpread.fromJSON(json);
  6.             for(var sheetPro in tempSpread.sheets){
  7.                 var sheet = tempSpread.sheets[sheetPro]
  8.                 //判断是否需要导出列头
  9.                 if(sheet.getText(0, 0, GC.Spread.Sheets.SheetArea.colHeader) !== "A"){
  10.                     sheet.addRows(0, 1);
  11.                     for(var col = 0; col < sheet.getColumnCount(); col++){
  12.                         sheet.setValue(0, col, sheet.getText(0, col, GC.Spread.Sheets.SheetArea.colHeader));
  13.                     }
  14.                 }
  15.             }
  16.             var newJSON = oldToJSON.call(tempSpread, options);
  17.             return newJSON;
  18.         }
复制代码
回复 使用道具 举报
dept_estate_dev
初级会员   /  发表于:2016-12-8 15:51:50
地板
dexteryao 发表于 2016-12-6 17:59
再引用spread js后添加如下方法,判断是否导出列头的方法,你可以根据业务具体在修改下。
导出多少行列头 ...

单列的可以,但是多列及合并列的情况无法导出,麻烦是否可以完善一下?
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-12-8 17:05:38
5#
问题已收到,制作demo需要些时间。
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-12-9 15:20:48
6#
导出多行表头,并且添加样式

  1.         var oldToJSON = GC.Spread.Sheets.Workbook.prototype.toJSON;
  2.         GC.Spread.Sheets.Workbook.prototype.toJSON = function(options){
  3.             var json = oldToJSON.call(this, options);

  4.             var tempSpread = new GC.Spread.Sheets.Workbook();
  5.             tempSpread.fromJSON(json);
  6.             var hearderStyle = new GC.Spread.Sheets.Style();
  7.             hearderStyle.borderLeft =new GC.Spread.Sheets.LineBorder("black",GC.Spread.Sheets.LineStyle.medium);
  8.             hearderStyle.borderTop = new GC.Spread.Sheets.LineBorder("black",GC.Spread.Sheets.LineStyle.medium);
  9.             hearderStyle.borderRight = new GC.Spread.Sheets.LineBorder("black",GC.Spread.Sheets.LineStyle.medium);
  10.             hearderStyle.borderBottom = new GC.Spread.Sheets.LineBorder("black",GC.Spread.Sheets.LineStyle.medium);

  11.             for(var sheetPro in tempSpread.sheets){
  12.                 var sheet = tempSpread.sheets[sheetPro]
  13.                 var headerRowCount = sheet.getRowCount(GC.Spread.Sheets.SheetArea.colHeader)
  14.                 //判断是否需要导出列头
  15.                 if(headerRowCount > 1 || sheet.getText(0, 0, GC.Spread.Sheets.SheetArea.colHeader) !== "A"){
  16.                     sheet.addRows(0, headerRowCount);
  17.                     for(var row = 0; row < headerRowCount; row++){
  18.                         sheet.setStyle(row, -1, hearderStyle);
  19.                         for(var col = 0; col < sheet.getColumnCount(); col++){
  20.                             sheet.setValue(row, col, sheet.getText(row, col, GC.Spread.Sheets.SheetArea.colHeader));
  21.                             var span = sheet.getSpan(row, col, GC.Spread.Sheets.SheetArea.colHeader)
  22.                             if(span && span.row === row && span.col ===col){
  23.                                 sheet.addSpan(span.row, span.col, span.rowCount, span.colCount)
  24.                             }
  25.                         }
  26.                     }
  27.                 }
  28.             }
  29.             var newJSON = oldToJSON.call(tempSpread, options);
  30.             return newJSON;
  31.         }
复制代码
回复 使用道具 举报
dept_estate_dev
初级会员   /  发表于:2016-12-12 09:35:37
7#
此处第24行,如果我的表头只有1行,并且没有span,我的内容第一行有一个5行span,返回的span是内容的span。最终会报错
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-12-12 11:51:07
8#
不是 很确定出现问题的原因,您修改下代码试下。哪里的逻辑就是判断如果表头存在span ,并且是span开始的第一个单元格就添加一个span。
if(span && span.row === row && span.col ===col && (span.rowCount > 1 || span.colCount > 1){
回复 使用道具 举报
dept_estate_dev
初级会员   /  发表于:2016-12-12 13:43:37
9#
blob251487731.png
blob333031005.png 此处span拿到的不是表头的span
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-12-12 14:28:56
10#
可否提供下json 。 这个问题我这里没有重现出来。还得调查下
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部