请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

LLj

初级会员

11

主题

55

帖子

261

积分

初级会员

积分
261

[已处理] 一点小问题

LLj
初级会员   /  发表于:2018-12-14 10:12  /   查看:3564  /  回复:7
我发现几个不同的表格,宽度不一样,在我后台设置的同样的代码里面,打印出来的效果刚刚好,因为按照需求,我想就是让别人画表格的时候固定高度和宽度,然后打印效果就是想要的这个,但是在这个里面,二个表格的宽度不一样,结果打印效果是一样,这个是什么原因了,怎么才可以处理了 1544752758(1).png POG$]1PQ4}4PB5`_8ILD1PO.png 1544752903(1).png 1544752868(1).png
                printInfo.paperSize(new GC.Spread.Sheets.Print.PaperSize(700, 1100));                printInfo.margin({ top: 0, bottom: 0, left: 0, right: 0, header: 0, footer: 0 });
                printInfo.orientation(GC.Spread.Sheets.Print.PrintPageOrientation.portrait);
                printInfo.centering(GC.Spread.Sheets.Print.PrintCentering.horizontal);
                printInfo.zoomFactor(1);
               // printInfo.showGridLine(true);
                printInfo.showColumnHeader(GC.Spread.Sheets.Print.PrintVisibilityType.hide);
                printInfo.showRowHeader(GC.Spread.Sheets.Print.PrintVisibilityType.hide);
                //printInfo.useMax(true);
                spread.print(spread.getActiveSheetIndex());


7 个回复

倒序浏览
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-12-14 11:02:10
沙发
不是很明白您的意思。

您是说两个表格宽度不同,打印出来的效果相同?

还是两个表格宽度相同但是打印出来的效果不同?

您是怎么计算表格宽度的?
回复 使用道具 举报
LLj
初级会员   /  发表于:2018-12-14 11:24:17
板凳
KevinChen 发表于 2018-12-14 11:02
不是很明白您的意思。

您是说两个表格宽度不同,打印出来的效果相同?

我的二个表格的宽度是不同的,一个大概760px   一个590px,打印出来的效果的是一样大小,这个是怎么回事呀,因为我想的是固定宽度和高度,让他打印效果一样。所以我不知道到底可以固定高度和宽度不?这个是什么情况影响的了
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-12-14 14:13:30
地板
您可以把这两个表格的模板导出一个ssjson文件,上传到附件,

我这边给您分析解决一下。
回复 使用道具 举报
LLj
初级会员   /  发表于:2018-12-14 15:15:29
5#
我在导出的时候弹出来的json总是有个地方总是出现三个点然后报错,我把excel给你吧,打印设置是left  25mm,其余三个方向都是15mm 顶面法 - 副本 (2).zip (17.72 KB, 下载次数: 221)
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-12-14 17:10:30
6#
您好,我这边分析了您给的模板,

您应该对SpreadJS 打印机制有点小误解,

SpreadJS针对每张sheet表,都有一个printInfo实例,您可以针对每张表来调整其打印效果。

再调整好所有表的打印格式后,调用spread的print方法来打印单张或所有表格。

print方法在不传递任何参数的情况下,默认是打印所有sheet,如果您只想打印其中某一张sheet,

可以将sheet的index传入print方法。参考API:

http://help.grapecity.com/spread ... Workbook~print.html

我这边也做了一个示例,您可以在这个示例上进一步调整您打印的尺寸,代码如下:

  1. // 第一张表
  2.             var sheet1 = spread.getSheet(0);
  3.             // sheet1.printInfo().paperSize(A4);
  4.             sheet1.printInfo().paperSize(new GC.Spread.Sheets.Print.PaperSize(800, 1200));
  5.             // sheet1.printInfo().centering(GC.Spread.Sheets.Print.PrintCentering.both);
  6.             sheet1.printInfo().margin({ top: 0, bottom: 0, left: 0, right: 0, header: 0, footer: 0 });
  7.             sheet1.printInfo().orientation(GC.Spread.Sheets.Print.PrintPageOrientation.portrait);
  8.             // sheet1.printInfo().orientation(GC.Spread.Sheets.Print.PrintPageOrientation.landscape);
  9.             sheet1.printInfo().zoomFactor(1.0);

  10.             // 第二张表
  11.             var sheet2 = spread.getSheet(1);
  12.             // sheet2.printInfo().paperSize(A4);
  13.             sheet2.printInfo().paperSize(new GC.Spread.Sheets.Print.PaperSize(800, 1200));
  14.             // sheet2.printInfo().centering(GC.Spread.Sheets.Print.PrintCentering.both);
  15.             sheet2.printInfo().margin({ top: 0, bottom: 0, left: 0, right: 0, header: 0, footer: 0 });
  16.             sheet2.printInfo().orientation(GC.Spread.Sheets.Print.PrintPageOrientation.portrait);
  17.             // sheet2.printInfo().orientation(GC.Spread.Sheets.Print.PrintPageOrientation.landscape);
  18.             sheet2.printInfo().zoomFactor(1.0);

  19.             // 一起打印
  20.             spread.print();
复制代码


效果图:

image.png462521361.png

image.png144686888.png
回复 使用道具 举报
LLj
初级会员   /  发表于:2018-12-17 10:26:16
7#
1:就是说,只要我每多一张表格需要打印的,然后就需要调整么。可以做成那种样子么?就是比如我用这个js画的表格(有很多个,所以不可能一个一个调),width都为800,height都为1000(打个比方),然后我写js代码写一个printinfo实例,让这些同高同宽的表格打印效果是一样的,可以么?
2:我想问这个的原因就是因为我试验了二个表格,我自己手动调的表格里面的宽和高度,但是宽和高度都不是相同的,打印效果一样,所以我想问一问。
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-12-17 10:56:03
8#
谢谢您的描述,您的需求很正常,我给您解释一下,

SpreadJS 在设计接口时,更多地考虑的是通用性的状况,

比如一般来说,不同sheet模板的高宽以及内容通常是不一样的,

但是像您这样的情况其实也很好解决,

您的所有表格,在设计时的尺寸都一样,那么很简单,

您在打印时,只需要获取所有表格的集合,然后迭代设置printInfo即可,

spread可以通过以下代码获取所有sheet的数组:

  1. var spread = GC.Spread.Sheets.findControl("ss");
  2. for(var i=0; i<spread.sheets.length; i++){var s = spread.sheets[i]; console.log(s.name())}
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部