以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]Excel报表第一页行数与其它页不一样的处理 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=159827) |
-- 作者:haotinghua -- 发布时间:2021/1/11 7:20:00 -- [求助]Excel报表第一页行数与其它页不一样的处理 因为贴近原来的一个报表,Excel报表第一页行数有28行,第二页到第十页每页数据行数为43行,每一页有footerrow占3行,如何在Excel报表中处理这个问题呢 |
-- 作者:有点蓝 -- 发布时间:2021/1/11 9:05:00 -- 这个暂时没有办法处理。可以考虑使用专业报表 |
-- 作者:haotinghua -- 发布时间:2021/1/11 9:36:00 -- 好的,通过报表生成后的代码解决了。场景是生成418行数据区,第一页28行数据,最后一行38行数据,其余44行每页,每页footerrow占3行 Dim Book As New XLS.Book(ProjectPath & "Attachments\\AAAA1.xls") Dim fl As String = ProjectPath & "Reports\\BBBBB.xls" Book.Build() \'生成细节区 Book.Save(fl) \'保存工作簿 \'Dim Proc As New Process \'打开工作簿 \'Proc.File = fl \'Proc.Start() Dim App As New MSExcel.Application Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(fl) Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1) For i As Integer = 0 To 8 Dim Rg2 As MSExcel.Range If i < 8 Then Rg2 = Ws.Range("A" & 39+3*i+44*i) \'以这个指定的单元格为基准 Else Rg2 = Ws.Range("A" & 39+3*i+44*i-6) \'以这个指定的单元格为基准 End If For i1 As Integer = 1 To 3 Rg2.EntireRow.Insert(MSExcel.XlInsertShiftDirection.xlShiftDown)\'在基准单元格上面插入一行 Next Next Dim Rg As MSExcel.Range Rg = Ws.Range("456:456,457:457,458:458") For i2 As Integer = 0 To 8 If i2 < 8 Then Rg.Copy(Ws.Range("A" & (39+3*i2+44*i2))) Else Rg.Copy(Ws.Range("A" & (39+3*i2+44*i2-6))) End If Next App.Visible = True \'
|