找回密码
 立即注册

QQ登录

只需一步,快速开始

ycak47

注册会员

4

主题

14

帖子

108

积分

注册会员

积分
108

活字格认证

最新发帖

[已处理] SPREAD打印的疑问

ycak47
注册会员   /  发表于:2016-6-20 20:44  /   查看:7239  /  回复:11
目前正在搞spread的打印功能,遇到一个问题向大神们求助:
纸张设置为A4,方向为纵向打印,但是不知道如何让内容自动缩放到在一页上显示。
(由于我的spread的内容较多,现在自动给我分成4页了)
虽然用ZoomFactor可以做到缩放,但是内容有变化的时候还得改,spread没有像excel那样自适应1页显示的功能吗?

11 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-6-21 08:44:58
沙发
您可以参考下 这个帖子,和您的问题一样
http://gcdn.gcpowertools.com.cn/forum.php?mod=viewthread&tid=22372
回复 使用道具 举报
ycak47
注册会员   /  发表于:2016-6-21 11:50:27
板凳
dexteryao 发表于 2016-6-21 08:44
您可以参考下 这个帖子,和您的问题一样
http://gcdn.gcpowertools.com.cn/forum.php?mod=viewthread&tid= ...

非常感谢,看到例子了,拷过去后变成16页了。
感觉核心代码是这句:
rules.Add(new FarPoint.Win.Spread.ScaleRule(FarPoint.Win.Spread.ResetOption.None, 1F, 0.1F, 0.1F));
能形象的说一下后边三个参数都是干啥的吗?
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-6-21 13:54:08
地板
(resetOption, startFactor, endFactor, interval)

后面三个分别是 测试ZoomFactor开始,结束,和间隔。 也就是缩放的一个范围,spread在这个范围内找一个合适的。
回复 使用道具 举报
ycak47
注册会员   /  发表于:2016-6-21 14:34:59
5#
dexteryao 发表于 2016-6-21 13:54
(resetOption, startFactor, endFactor, interval)

后面三个分别是 测试ZoomFactor开始,结束,和间隔。 ...

我的如果设置ZoomFactor=0.56f的话,基本上可以一页打印了。
但是我用ScaleRule的话,无论怎么调整后边的参数都达不到效果,奇怪了。
要不就是出现16页,要不就是挤的看不清。难道纵向跟横向的设置方法不一样?
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-6-21 14:57:18
6#
如果你能确定个大概范围可以设置
rules.Add(new FarPoint.Win.Spread.ScaleRule(FarPoint.Win.Spread.ResetOption.None, 0.6F, 0.5F, 0.02F));
再试试
把范围放小精度放高
回复 使用道具 举报
ycak47
注册会员   /  发表于:2016-6-21 15:32:17
7#
dexteryao 发表于 2016-6-21 14:57
如果你能确定个大概范围可以设置
rules.Add(new FarPoint.Win.Spread.ScaleRule(FarPoint.Win.Spread.Rese ...
  1. FarPoint.Win.Spread.SmartPrintRulesCollection rules = new FarPoint.Win.Spread.SmartPrintRulesCollection();
  2. rules.Add(new FarPoint.Win.Spread.ScaleRule(FarPoint.Win.Spread.ResetOption.None, 0.6F, 0.5F, 0.02F));
  3. rules.Add(new FarPoint.Win.Spread.BestFitColumnRule(FarPoint.Win.Spread.ResetOption.None));

  4. printset.SmartPrintRules = rules;
  5. printset.UseSmartPrint = true;
  6. printset.SmartPrintPagesWide = 100;
  7. printset.SmartPrintPagesTall = 1;
  8. printset.BestFitCols = true;
  9. printset.BestFitRows = true;

  10. //缩放比例
  11. //printset.ZoomFactor = 0.57f;

  12. //水平居中打印
  13. printset.Centering = FarPoint.Win.Spread.Centering.Horizontal;
复制代码


还是不行,感觉行高和列宽的缩放比例不同,当所有列能显示得下的时候,行已经挤的看不清了。
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-6-21 15:43:44
8#
这个得看你数据多少了,如果行本身很多那肯定不能都打印在一页了。
回复 使用道具 举报
ycak47
注册会员   /  发表于:2016-6-21 15:49:14
9#
dexteryao 发表于 2016-6-21 15:43
这个得看你数据多少了,如果行本身很多那肯定不能都打印在一页了。

可是用ZoomFactor不这样啊。实在不行我就凑合用ZoomFactor吧……
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-6-21 16:07:21
10#
如果上面参数您改了以后都不行,那就只能固定ZoomFactor了。可以根据不同的数据设置对应的ZoomFactor。

评分

参与人数 1满意度 +5 收起 理由
ycak47 + 5 赞一个!

查看全部评分

回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部