以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  EXecl报表分页后格式设置问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=174147)

--  作者:北狐
--  发布时间:2022/1/4 13:46:00
--  EXecl报表分页后格式设置问题
模板设置如下

图片点击可在新窗口打开查看此主题相关图片如下:模板.jpg
图片点击可在新窗口打开查看
导出报表按钮的代码设置如下
Dim ReportDate As String =Format( e.Form.Controls("StartDate2").Value ,"yyyy年MM月")  \'定义开始日期
Dim st As Date = Date.Now
\'EXCEl报表_父表数据
Dim Book As New XLS.Book(ProjectPath & "Attachments\\yejitongji.xls")
Book.Build() \'生成细节区
Dim lj As String = ProjectPath & "" & ReportDate & "报表\\" & ReportDate & "业绩统计.xls" \'定义保存路径及文件名
Book.Save(lj) \'保存工作簿

\'excel模板应设置页面宽度\\高度为自动,如设置为1页,则分页无效
\'分栏分页
\'EXCEL_VBA_明细表数据
Dim tb As Table = Tables("业绩统计")
Dim nms() As String = {"序号","客销"}
tb.Filter = "类型 <>\'\'" 

Dim prs As Integer = 28 \'每页细节区行数
Dim fl As Integer = 4 \'每页栏数
Dim ls As Integer = 3 \'每栏列数
Dim bts As Integer = 2 \'表头数
Dim bws As Integer = 0 \'表尾数

Dim csh As Integer  \'每页初始行
Dim s,g,lz,zh As Integer
zh=prs+bts+bws  \'每页总行数


Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(lj)
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
App.ScreenUpdating = False 
For p As Integer = 1 To math.Ceiling(tb.Rows.Count /( fl*prs)) - 1  \'p分页
    Ws.Rows("1:" & zh).Copy(Ws.Range("a" & p*zh+1))
Next

Ws.Cells.PageBreak = MSExcel.XlPageBreak.xlPageBreakNone\'清除所有分页符
Ws.Columns(fl*ls+1).PageBreak = MSExcel.XlPageBreak.xlPageBreakManual \'纵向分页

For p As Integer = 0 To math.Ceiling(tb.Rows.Count /( fl*prs)) - 1  \'p分页
    csh=bts+p*zh
    s = 0
    g = 1
    
    For r As Integer =  P*FL*prs To math.min(tb.Rows.Count - 1,( p + 1) *fl* prs - 1)  \'在每页数据内循环
        
        lz = (Int(s/prs)) * ls+1  \'指定数据列数
        If s/prs = Int((s+1)/prs)  Then g = 1     
        ws.cells(csh+g,lz) = r+1
        
        For m As Integer = 0 To nms.Length-1
            ws.cells(csh+g,lz+m+1) = tb.rows(r)(nms(m))
        Next
        g = g + 1 \'每页每列各数据累计次数
        s = s + 1 \'每页各数据累计次数
        
    Next
    \'msgbox((p+1)*zh+1)
    Ws.Rows((p+1)*zh+1).PageBreak = MSExcel.XlPageBreak.xlPageBreakManual
Next

Ws.PageSetup.CenterHeader = ""
MessageBox.Show("耗时: " & (Date.Now - st).TotalSeconds & "秒") \'计算并显示执行代码所花费的秒数
Wb.Save
App.ScreenUpdating =True
App.Visible = True
导出报表的格式如下,导出的数据能正常分页并显示(只是手动清除了客户名),但第二页的表格的格式并没有引用第一页的格式,请老师帮忙看下,要怎么处理第二页的格式才能跟第1页一样,谢谢

图片点击可在新窗口打开查看此主题相关图片如下:效果.jpg
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2022/1/4 13:57:00
--  
使用标签的方式生成即可:http://www.foxtable.com/webhelp/topics/1414.htm
不需要要手动填充

--  作者:北狐
--  发布时间:2022/1/4 15:27:00
--  
使用标签的方式生成,没有序号
而且用同种方法,在其他地方能正常生成边框

--  作者:有点蓝
--  发布时间:2022/1/4 15:37:00
--  
请上传实例测试