Foxtable(狐表)用户栏目专家坐堂 → [求助] 报表对齐


  共有5608人关注过本帖树形打印复制链接

主题:[求助] 报表对齐

帅哥哟,离线,有人找我吗?
建筑人生
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:342 积分:3451 威望:0 精华:0 注册:2014/8/20 20:14:00
[求助] 报表对齐  发帖心情 Post By:2022/8/13 12:15:00 [只看该作者]

Dim doc As New PrintDoc '定义一个报表
'设置纸张
doc.PageSetting.PaperKind = 9 '纸张类型改为A4
doc.PageSetting.Landscape = False '纵向打印
'设置页边距
Doc.PageSetting.LeftMargin = 10 '设置左边距
Doc.PageSetting.RightMargin = 5 '设置右边距
Doc.PageSetting.TopMargin = 5 '设置上边距
Doc.PageSetting.BottomMargin = 5 '设置下边距
'设置页脚
Dim rt2 As New prt.RenderText '设置文本对象的内容
rt2.Text = "第[PageNo]页,共[PageCount]页" '设置文本内容
'rt2.Style.TextAlignHorz = prt.AlignHorzEnum.Right '靠右对齐
rt2.Style.TextAlignHorz = prt.AlignHorzEnum.Center'中心对齐
rt2.Style.Borders.Bottom = New prt.LineDef(0, Color.Green) '设置底边框
rt2.Style.Padding.Bottom = 0.2 '底端内容缩进0.5毫米
rt2.Style.FontSize = 10 '字体大小为8磅
'Doc.PageHeader = rt2 '作为页眉使用
Doc.PageFooter = rt2'作为脚使用

Dim rt As New prt.RenderTable() '定义一个表格对象
doc.Body.Children.Add(rt) '将表格对象加入到报表中

'设置列宽
rt.Style.FontSize = 10'字体大小

rt.Cols(0).Width = 25 '序号 mm
rt.Cols(3).Width = 25 '序号
rt.Cols(6).Width = 25 '序号

rt.Cols(1).Width = 25 '名称
rt.Cols(4).Width = 25 '名称
rt.Cols(7).Width = 25 '名称

rt.Cols(2).Width = 25 '金额
rt.Cols(5).Width = 25 '金额
rt.Cols(8).Width = 25 '金额

rt.Style.GridLines.All = New prt.Linedef '设置网格线
rt.CellStyle.Spacing.All = 1 '内容距离网格线1毫米

'设置主标题
rt.Cells(0, 0).text = "收入及支出报表"
rt.Cells(0, 0).SpanCols = 9 '合并第一行全部单元格,用于显示主标题

'设置对齐
rt.Style.TextAlignHorz = prt.AlignHorzEnum.Left'所有水平左对齐
rt.Style.TextAlignVert = prt.AlignVertEnum.Center '所有垂直中心对齐
'例外  金额列水平右对齐
rt.Cols(2).Style.TextAlignHorz = prt.AlignHorzEnum.Right
rt.Cols(5).Style.TextAlignHorz = prt.AlignHorzEnum.Right
rt.Cols(8).Style.TextAlignHorz = prt.AlignHorzEnum.Right
'例外 前3行水平中心对齐
'rt.cells(2, 2).Style.TextAlignHorz = prt.AlignHorzEnum.Center
'rt.cells(2, 5).Style.TextAlignHorz = prt.AlignHorzEnum.Center
'rt.cells(2, 8).Style.TextAlignHorz = prt.AlignHorzEnum.Center

'rt.Cells(0, 0).Style.TextAlignHorz = prt.AlignHorzEnum.Center '主标题居中
rt.Cells(0, 0).Style.Font = New Font("宋体", 16, FontStyle.Bold) '设置主标题字体

rt.Rows(0).Style.Borders.All = New prt.LineDef("0mm", Color.white) '去掉第一行的网格线
rt.Rows(0).Style.GridLines.Bottom = New prt.LineDef("0.1mm", Color.black) '设置底边框

'合并行设置及赋值
rt.cells(1, 0).SpanCols = 3 '合并第一行前3个单元格
rt.cells(1, 0).Text = "收入" '设置第一行第一个单元格的内容
rt.Cells(1, 3).SpanCols = 6 '合并第一行最后6个单元格
rt.Cells(1, 3).Text = "支出" '设置第一行第四个单元格的内容

rt.Cells(2, 0).Text = "序号1"
rt.Cells(2, 1).Text = "名称1"
rt.Cells(2, 2).Text = "金额1"

rt.Cells(2, 3).Text = "序号2"
rt.Cells(2, 4).Text = "名称2"
rt.Cells(2, 5).Text = "金额2"

rt.Cells(2, 6).Text = "序号3"
rt.Cells(2, 7).Text = "名称3"
rt.Cells(2, 8).Text = "金额3"

rt.RowGroups(0, 3).Header = prt.TableHeaderEnum.All '前3行作为表头(从0开始,共3行)
rt.RowGroups(0, 3).Style.TextAlignHorz = prt.AlignHorzEnum.Center'前3行水平对齐

Dim tb As Table = Tables("主窗口_Tab_收支报表")
Dim ColNames As New List(Of String)
For Each cl As Col In tb.Cols '排除隐藏列
    If cl.Visible Then
        ColNames.Add(cl.Name)
    End If
Next
For ri As Integer = 0 To tb.Rows.count - 1 '行循环赋值
    For ci As Integer = 0 To ColNames.Count - 1 '列循环赋值
        rt.Cells(ri + 3, ci).Text = tb.Rows(ri)(ColNames(ci))
    Next
Next
Doc.Preview() '预览报表

 

第三行 金额列为什么没有居中



图片点击可在新窗口打开查看此主题相关图片如下:002.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2022/8/13 13:36:45编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109513 积分:557233 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/8/13 14:14:00 [只看该作者]

'例外  金额列水平右对齐
rt.Cols(2).Style.TextAlignHorz = prt.AlignHorzEnum.Right
rt.Cols(5).Style.TextAlignHorz = prt.AlignHorzEnum.Right
rt.Cols(8).Style.TextAlignHorz = prt.AlignHorzEnum.Right

 回到顶部
帅哥哟,离线,有人找我吗?
建筑人生
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:342 积分:3451 威望:0 精华:0 注册:2014/8/20 20:14:00
  发帖心情 Post By:2022/8/13 15:07:00 [只看该作者]

后面重新头对齐了啊,只有金额列没对齐,其他都居中对齐了

rt.RowGroups(0, 3).Header = prt.TableHeaderEnum.All '前3行作为表头(从0开始,共3行)
rt.RowGroups(0, 3).Style.TextAlignHorz = prt.AlignHorzEnum.Center'前3行水平对齐


我只要头中间对齐,其他的右对齐,那要怎么写代码
[此贴子已经被作者于2022/8/13 15:18:41编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109513 积分:557233 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/8/13 15:18:00 [只看该作者]

优先级问题,列的设置优先级高。按单元格逐个设置吧

 回到顶部