以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 设置垂直方式出错 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=192149) |
-- 作者: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 |
-- 作者:有点蓝 -- 发布时间: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 |