找回密码
 立即注册

QQ登录

只需一步,快速开始

zzz123

注册会员

13

主题

32

帖子

159

积分

注册会员

积分
159
zzz123
注册会员   /  发表于:2023-5-5 11:32  /   查看:3028  /  回复:9
目前想要导出单元格的背景图片,通过直接导出PDF无法导出,通过 PrintBackground 方法可以绘制背景图片,但是这个方法绘制的背景图片在每一页都有,想问下老师能不能在每一页都绘制不同的背景图片
  1. Private Sub fs_PrintBackground(sender As Object, e As PrintBackgroundEventArgs) Handles fs.PrintBackground
  2.         fs.ActiveSheet.FrozenRowCount = 0
  3.         Dim saveState As System.Drawing.Drawing2D.GraphicsState = e.Graphics.Save()
  4.         Width = 0
  5.         If fs.ActiveSheet.RowCount > 0 Then
  6.             For i As Integer = 0 To fs.ActiveSheet.ColumnCount - 1
  7.                 Width += fs.ActiveSheet.GetColumnWidth(i)
  8.             Next
  9.         End If

  10.         For i As Integer = 0 To fs.ActiveSheet.RowCount - 1
  11.             If TypeName(fs.ActiveSheet.Cells(i, 0).CellType).Equals("TextCellType") Then
  12.                 Dim cellType As TextCellType = fs.ActiveSheet.Cells(i, 0).CellType()
  13.                 If cellType.BackgroundImage IsNot Nothing Then
  14.                     Dim rt As Rectangle = fs.GetCellRectangle(0, 0, i, 0)
  15.                     rt.Height = fs.ActiveSheet.Rows(i).Height
  16.                     rt.Width = cellType.BackgroundImage.Image.Width * (fs.ActiveSheet.Rows(i).Height / cellType.BackgroundImage.Image.Height)
  17.                     rt.X = (Width - rt.Width) / 2
  18.                     e.Graphics.SetClip(rt)
  19.                     e.Graphics.DrawImage(cellType.BackgroundImage.Image, rt)
  20.                 End If
  21.             End If
  22.         Next
  23.         e.Graphics.Restore(saveState)
  24.     End Sub
复制代码


9 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-5-5 18:02:17
沙发
这个事件是在每个page被打印的时候都会触发的,你可以通过PageNumber属性看看是否能拿到默认的页码。然后再以此做判断。分别给Graphics设置不同的图片
回复 使用道具 举报
zzz123
注册会员   /  发表于:2023-5-5 18:05:17
板凳
那怎么判断单元格在哪个PageNumber上呢?
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-5-5 18:36:38
地板
没法在这个事件中判断单元格
回复 使用道具 举报
zzz123
注册会员   /  发表于:2023-5-5 22:34:45
5#
那单元格中的背景图片就没有办法导出来了吗?我看打印是可以打印出背景图片的,为啥改下属性 PrintInfo.PrintToPdf = True 就不能导出背景图片了呢?
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-5-6 09:16:16
6#
你的“单元格中的背景图片”是怎么添加的呢?普通单元格并没有办法添加背景图片的
回复 使用道具 举报
zzz123
注册会员   /  发表于:2023-5-6 09:47:21
7#
是用 TextCellType 来设置背景图片的
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-5-6 18:51:19
8#
了解了,这个背景图目前确实不支持导出pdf,和直接打印出来不一样
回复 使用道具 举报
zzz123
注册会员   /  发表于:2023-5-8 09:35:22
9#
好吧,我暂时通过修改打印机直接打印PDF来解决
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-5-8 12:25:44
10#
嗯,也是一个思路。通过某些虚拟打印机就行
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部