Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共2 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:设置垂直方式出错

1楼
9EQ98 发表于: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楼
有点蓝 发表于: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
共2 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .02734 s, 2 queries.