找回密码
 立即注册

QQ登录

只需一步,快速开始

hptj

高级会员

72

主题

240

帖子

1170

积分

高级会员

积分
1170

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

hptj
高级会员   /  发表于:2015-8-19 09:58  /   查看:9196  /  回复:6
怎么把sheetview 里面的行,列分组的线条也打印出来!

6 个回复

倒序浏览
frank.zhang
社区贡献组   /  发表于:2015-8-19 11:35:00
沙发
您好,
我使用以下代码,没有能够重现问题,您看下是否遗漏的哪些操作。
  1.         private void Form2_Load(object sender, EventArgs e)
  2.         {
  3.             fpSpread1.Sheets[0].RowCount = 4;
  4.             fpSpread1.Sheets[0].ColumnCount = 5;
  5.             fpSpread1.AllowColumnMove = true;
  6.             fpSpread1.ActiveSheet.GroupBarInfo.Visible = true;
  7.             fpSpread1.ActiveSheet.AllowGroup = true;

  8.             FarPoint.Win.Spread.GroupInfo gi = new FarPoint.Win.Spread.GroupInfo();
  9.             gi.BackColor = Color.Yellow;

  10.             FarPoint.Win.Spread.GroupInfo gi2 = new FarPoint.Win.Spread.GroupInfo();
  11.             gi2.BackColor = Color.Green;

  12.             FarPoint.Win.Spread.GroupInfoCollection gic = new FarPoint.Win.Spread.GroupInfoCollection();
  13.             gic.AddRange(new FarPoint.Win.Spread.GroupInfo[] { gi, gi2 });

  14.             fpSpread1.ActiveSheet.GroupInfos.Add(gic[0]);

  15.         }
复制代码

  1.         private void button2_Click(object sender, EventArgs e)
  2.         {
  3.             PrintInfo info = new PrintInfo();
  4.             info.BestFitRows = true;
  5.             this.fpSpread1.SetPrintInfo(info, 0);
  6.             this.fpSpread1.ShowPageSetup(this.fpSpread1.Sheets[0], true, true);

  7.         }
复制代码



2015-08-19_113415.jpg (80.39 KB, 下载次数: 212)
回复 使用道具 举报
hptj
高级会员   /  发表于:2015-8-19 13:25:00
板凳
下载附件,

farPointPrintGroup.rar (22.85 KB, 下载次数: 223)
回复 使用道具 举报
frank.zhang
社区贡献组   /  发表于:2015-8-19 14:39:00
地板
回复 3楼hptj的帖子

您好,
非常抱歉
经过对您的问题验证,目前Spread不支持分组线条的打印。
这个问题,我已经跟产品经理进行确认,Spread打印时主要是通过PrintInfo提供打印的参数设置,目前没有提供相应的方法。
在Excel当中,也不能够对分组线条进行打印。
给您带来的不便,希望能够谅解。
回复 使用道具 举报
hptj
高级会员   /  发表于:2015-8-19 15:50:00
5#
我需要打印出来,给个方案吧!
回复 使用道具 举报
frank.zhang
社区贡献组   /  发表于:2015-8-19 18:55:00
6#
您好,
非常抱歉给您带来了很多的不便。
Spread在设计时,很多功能都参考Excel。所以,这个功能是在设计产品的时候,是没有考虑在内的。
您在使用我们的产品中,有这样的需求,我们可以作为一个需求报给产品组,但是,我们的产品目前非常复杂,可能添加一个功能,牵扯到很多其它的模块。所以,需要对单个功能对整个产品的影响进行评估,从而决定是否增加这个需求。
我们这边和一些经验丰富的开发人员讨论了一下,目前打印出这个线条可以考虑将整个控件保存为一个图片,然后将图片进行打印。就目前的情况,这个是一个可行的解决方案。
回复 使用道具 举报
frank.zhang
社区贡献组   /  发表于:2015-8-21 17:43:00
7#
您好,
非常抱歉给您带来的不便。
经过电话沟通,您希望我们能够对这个问题做一个验证。
我们尝试使用保存截图的方式:
  1.             Image image = new Bitmap(this.fpSpread1.Width, this.fpSpread1.Height);
  2.             Graphics g = Graphics.FromImage(image);
  3.             g.CopyFromScreen(this.Location.X + this.fpSpread1.Location.X, this.Location.Y + this.fpSpread1.Location.Y + 30, 0, 0, new System.Drawing.Size(this.fpSpread1.Width, this.fpSpread1.Height));
  4.             string hour = DateTime.Now.Minute.ToString();
  5.             string second = DateTime.Now.Second.ToString();
  6.             image.Save(name);
复制代码

然后,实现换页使用
  1.             this.fpSpread1.ActiveSheet.SetActiveCell(fpSpread1.ActiveSheet.ActiveRowIndex +43, fpSpread1.ActiveSheet.ActiveColumnIndex);
  2.             this.fpSpread1.ShowActiveCell(VerticalPosition.Top, HorizontalPosition.Nearest);
复制代码

测试发现,单个页面是可以的,多个页面截取图片时,会出现重复。我们尝试使用
  1. Thread.Sleep(1000);
复制代码
但是,绘制图形是Framework提供的,无法控制顺序。

另外,我们还尝试截取在打印时绘制的graph。通过给graph增加背景的方式。我们联系产品组,查阅了相关的代码,打印时的信息已经绘制完成,相关的信息不足以绘制出图片。

如果要实现这个功能,我们需要重新开发分组相关的所有代码。

最后就给您带来的不便,再次表示歉意。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部