找回密码
 立即注册

QQ登录

只需一步,快速开始

hptj

高级会员

72

主题

240

帖子

1170

积分

高级会员

积分
1170

活字格认证微信认证勋章元老葡萄

hptj
高级会员   /  发表于:2013-12-10 14:13  /   查看:6551  /  回复:7
请问怎么设置打印信息,才能做到生成的PDF和excel打印预览一样?打印预览是两页。另外页边距设置也希望一样,还有就是这里的PrintInfo的ColStart为-1,不知道为什么
Demo.rar (71.73 KB, 下载次数: 4)

7 个回复

倒序浏览
roger.wang
社区贡献组   /  发表于:2013-12-10 15:06:00
沙发
回复 1楼hptj的帖子

非常感谢您能在第一时间提供demo,这个对于准确定位问题效率非常高! 赞一个  

您问了2个问题:
1 做到生成的PDF和excel打印预览一样(Excel打印预览是两页)
回答:修改pt.Orientation = PrintOrientation.Portrait;

2 PrintInfo的ColStart为-1
回答:从SheetView获得的PrintInfo获得不了ColStart数据
可通过如下代码
  1.             //设置打印范围
  2.             pt.RowEnd = this.fps.Sheets[0].GetLastNonEmptyRow(FarPoint.Win.Spread.NonEmptyItemFlag.Data);
  3.             pt.ColEnd = this.fps.Sheets[0].GetLastNonEmptyColumn(FarPoint.Win.Spread.NonEmptyItemFlag.Data);
复制代码



基于以上2点,可解决本帖子的问题。
生成的PDF截图:

spread_print_1.gif

spread_print_2.gif
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2013-12-10 15:09:00
板凳
回复 1楼hptj的帖子

处理这个帖子,参考了您上个月的一个帖子 Win form FarPoint打印成PDF问题
回复 使用道具 举报
hptj
高级会员   /  发表于:2013-12-10 15:27:00
地板
请问您这个截图是和excel打印预览一样吗, 我怎么看数字跑到第一页了,怎样才能做到生成的PDF和excel打印预览一样?上下左右的空白边距也一样

            //设置打印范围
            pt.RowEnd = this.fps.Sheets[0].GetLastNonEmptyRow(FarPoint.Win.Spread.NonEmptyItemFlag.Data);
            pt.ColEnd = this.fps.Sheets[0].GetLastNonEmptyColumn(FarPoint.Win.Spread.NonEmptyItemFlag.Data);
这样设置的打印范围,能和excel的打印范围一样吗?如果不能,可以提供一个思路吗?
回复 使用道具 举报
hptj
高级会员   /  发表于:2013-12-10 15:31:00
5#
Demo里有原始excel文件,请您看一下excel打印预览的效果,如果能够修改下Demo生成和打印预览一样的PDF,再把Demo传上来就感激不尽。
上个月的帖子,您说通过PrintInfo拿到打印区域信息,但本帖中您又说“从SheetView获得的PrintInfo获得不了ColStart数据”,那我怎么样才能获取excel打印信息,哪些列在第一页,哪些列在第二页,哪些行在第一页,哪些行在第二页......
下面是您上个月的帖子中内容:
经调查 Spread 可以拿到 Excel 中的 “打印区域设置”信息,获取代码如下:
private void Form1_Load(object sender, EventArgs e)
        {
            this.fpSpread1.OpenExcel("原始文件.xls");


            PrintInfo pt = this.fpSpread1.Sheets[1].PrintInfo;
            pt.Orientation = PrintOrientation.Landscape;
            pt.PrintToPdf = true;
            pt.PdfFileName = "test.pdf";
            pt.ZoomFactor = 0.75f;
            pt.ShowColor = true;

            pt.UseSmartPrint = true;

            this.fpSpread1.Sheets[1].PrintInfo = pt;
            this.fpSpread1.AllowCellOverflow = true;
            this.fpSpread1.Sheets[1].Rows[22].VerticalAlignment = CellVerticalAlignment.Top;
            this.fpSpread1.PrintSheet(1);
        }
复制代码
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2013-12-10 16:21:00
6#
回复 5楼hptj的帖子

您太客气了。

实现的思路:
1 通过Spread的打印预览功能,测试几个参数(Margin)看看那个和Excel打印预览的一致
2 把这个数据用来设置PrintInfo
3 可实现类似Excel预览的效果。

Excel的打印预览有默认参数:Margin参数、A4还是A3纸张等等。
Spread把这个接口开发给用户需要配置PrintInfo类。
设置maring、Header、Footer,可参考今天另外一个帖子:http://gcdn.grapecity.com/showtopic-11264.html

上demo:
Sprint_Win_PDF_Print_Preview .rar (1.15 MB, 下载次数: 625)
回复 使用道具 举报
hptj
高级会员   /  发表于:2013-12-11 09:39:00
7#
好的,谢谢
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2013-12-11 10:44:00
8#
回复 7楼hptj的帖子

客气了。

进展过程有需要帮助的,请随时提出。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部