找回密码
 立即注册

QQ登录

只需一步,快速开始

pyy514692469

注册会员

12

主题

57

帖子

153

积分

注册会员

积分
153

微信认证勋章

pyy514692469
注册会员   /  发表于:2019-4-1 11:40  /   查看:2709  /  回复:4
问题代码见附件,

问题代码及截图.rar

16.67 KB, 下载次数: 69

4 个回复

倒序浏览
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-4-1 18:01:19
沙发
您好!

1、修改背景色的问题,您代码中出问题的代码截图如下:

image.png104323119.png

按这个逻辑,实际上您是创建了一个新的sheet,然后把这个新的sheet的背景色改了。

要改变您自己的sheet,应该改为:

image.png493247374.png

完整代码如下:

  1. //获取当前spread对象实例
  2. var spread = GC.Spread.Sheets.findControl("mainExcel");
  3. // 保存当前活动表的index
  4. var activeSheetIndex = spread.getActiveSheetIndex();
  5. // 设置活动表为第一张表
  6. spread.setActiveSheet(spread.getSheet(0).name());
  7. //将spread转换成json格式
  8. var testJson = JSON.stringify(spread.toJSON());
  9. //初始化一个新的spread(不需要进行页面渲染)
  10. var copyspread = new GC.Spread.Sheets.Workbook();
  11. //将转换成json格式的spreadjs导入到新的spread
  12. copyspread.fromJSON(JSON.parse(testJson));
  13. //删除所有单元格颜色,三角形符号      
  14. var style = new GC.Spread.Sheets.Style();
  15. style.backColor = "white";

  16. var a = [];
  17. for (var i = 0; i < copyspread.getSheetCount(); i++) {
  18.         if (sheetindexs.indexOf(i.toString()) == -1) {
  19.                 //获取要删除的sheet名称
  20.                 a.push(copyspread.sheets[i].name());
  21.         }
  22.         else {
  23.                 //将表单设置为不被保护
  24.                 copyspread.sheets[i].options.isProtected = false;
  25.                 var sheetname = copyspread.sheets[i].name();
  26.                 //copyspread.sheets[i].setDefaultStyle(style, GC.Spread.Sheets.SheetArea.viewport);
  27.                 for (var j = 0; j < copyspread.sheets[i].getRowCount(); j++) {
  28.                         //设置sheet里单元格默认背景色//这里修改背景色失败;
  29.                         for (var k = 0; k < copyspread.sheets[i].getColumnCount(); k++) {
  30.                                 var sheetTmp = copyspread.sheets[i];
  31.                                 sheetTmp.getCell(j, k).backColor("white");
  32.                         }
  33.                 }
  34.         }
  35. }
  36. for (var i = 0; i < a.length; i++) {
  37.         //查sheetname对应的索引
  38.         var index = copyspread.getSheetIndex(a[i]);   
  39.         //删除不需要的sheet
  40.         copyspread.removeSheet(index);
  41. }
  42. // 还原活动表
  43. spread.setActiveSheetIndex(activeSheetIndex);           
  44. SPO.printSpindexs(copyspread, sheetindexs);
  45. $scope.addPrintline();
复制代码
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-4-1 18:05:19
板凳
2、您注意一下设置单元格类型的句式,是通过new关键字创建了一个Combobox实例,而不是直接把类赋值给对应的单元格,如图:

image.png358500060.png

在您截图中应该把红框代码改为:

  1. sheet.setCellType(3,2,new GC.Spread.Sheets.CellTypes.Text());
复制代码
回复 使用道具 举报
pyy514692469
注册会员   /  发表于:2019-4-2 09:08:55
地板
KevinChen 发表于 2019-4-1 18:05
2、您注意一下设置单元格类型的句式,是通过new关键字创建了一个Combobox实例,而不是直接把类赋值给对应的 ...

感谢您的回复,问题已解决。
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-4-2 10:55:05
5#
不客气,本帖我结贴了,有新的问题欢迎发新贴交流。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部