Foxtable(狐表)用户栏目专家坐堂 → 设置垂直方式出错


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

主题:设置垂直方式出错

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


加好友 发短信
等级:二尾狐 帖子:521 积分:4784 威望:0 精华:0 注册:2014/1/16 16:55:00
设置垂直方式出错  发帖心情 Post By:2024/5/31 11:11:00 [只看该作者]

Dim tbl As Table = CurrentTable 
Dim hdr As Integer = tbl.HeaderRows '获得表头的层数
Dim cnt As Integer
Dim Book As New XLS.Book

Book.DefaultFont = New Font("宋体", 10) '设置默认字体

Dim Sheet As XLS.Sheet = Book.Sheets(0)
tbl.CreateSheetHeader(Sheet) '生成表头
Dim cnt_Cou As Integer = tbl.Cols.Count - 1
Dim row_Cou As Integer = tbl.Rows.Count - 1
Dim Style0 As Xls.Style = Book.NewStyle '新建一个样式
Dim Style1 As Xls.Style = Book.NewStyle '新建一个样式
'Sheet(r + hdr, cnt).Style.AlignVert = XLS.AlignVertEnum.Center

Style0.BackColor = Color.FromARGB(255, 202, 202, 202) '样式的背景颜色

Style1.BackColor = Color.FromARGB(255, 232, 232, 232) '样式的背景颜色

Dim 合并几行 As Integer = 1 '合并几行
For c As Integer = 0 To tbl.Cols.Count - 1
    合并几行 = 1
    If tbl.Cols(c).Visible Then
        For hdri As Integer = 0 To hdr - 1 ' 表头行
            Sheet(hdri, cnt).Style = style0
            Sheet(hdri, cnt).Style.AlignHorz = XLS.AlignHorzEnum.Center
            Sheet(hdri, cnt).Style.AlignVert = XLS.AlignVertEnum.Center
        Next 
        For r As Integer = 0 To tbl.Rows.Count - 1 ' 循环所有行
            Sheet(r + hdr, cnt).value = tbl(r, c).ToString
            If r Mod 2 = 0 Then
                sheet(r + hdr, cnt).Style = Style1
            End If
            If r > 0 Then
                If tbl(r, c) = tbl(r - 1, c) Then ' 本行 上一行的值
                    合并几行 = 合并几行 + 1
                    'MessageBox.Show("r" & r & "c" & cnt & vbCrLf & "rc" & rc & vbCrLf & vbCrLf & tbl(r, c) & vbCrLf & tbl(r - 1, c))
                Else
                    'MessageBox.Show("r" & r & "c" & cnt & vbCrLf & "rc" & rc & vbCrLf & vbCrLf & tbl(r, c) & vbCrLf & tbl(r - 1, c))
                    If 合并几行 > 1 Then
                        Output.SHOW("行:" & r + hdr - 合并几行 & " 列:" & cnt & " 合并几行:" & 合并几行)
                        Sheet.MergeCell(r + hdr - 合并几行 , cnt, 合并几行, 1)
                    End If
                    合并几行 = 1
                End If
                If r > 1 AndAlso r = tbl.Rows.Count - 1 AndAlso 合并几行 > 1 Then ' 最后一行
                    Output.SHOW("最后1行:" & "开始行:" & r + hdr - 合并几行 + 1 & " 列:" & cnt & " 合并几行:" & 合并几行)
                    Sheet.MergeCell( r + hdr - 合并几行 + 1 , cnt, 合并几行, 1)
                End If 
            End If
        Next
        
        cnt = cnt + 1
    End If
Next


For r As Integer = 0 To tbl.Rows.Count - 1 ' 循环所有行
    sheet.rows(r + hdr).Height = tbl.Grid.rows(r).HeightDisplay ' 设置行高
    
    '    For c As Integer = 0 To Sheet.Cols.Count - 1
    '        Sheet(1, C).Style.AlignVert = XLS.AlignVertEnum.Center
    '    Next 
Next

    Sheet.rows(0).Style.AlignVert = XLS.AlignVertEnum.Center   ' 这里不出错 ? 

For U As Integer = 1 To Sheet.Rows.Count - 1
    Sheet.rows(U).Style.AlignVert = XLS.AlignVertEnum.Center   ' 这里执行为什么出错 ? 
Next


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111427 积分:567211 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/5/31 11:25:00 [只看该作者]

第一行不出错,应该是之前添加过样式,否则就会出错。正确的用法应该是先添加一个样式

Dim Stylexx As Xls.Style = Book.NewStyle '新建一个样式
Stylexx.AlignVert = XLS.AlignVertEnum.Center

For U As Integer = 1 To Sheet.Rows.Count - 1
    Sheet.rows(U).Style = Stylexx
Next

 回到顶部