以文本方式查看主题

-  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=180977)

--  作者:cnsjroom
--  发布时间:2022/10/21 1:25:00
--  excel模板中怎么实现在某个单元格显示 第几页共几页?

excel模板中怎么实现在某个单元格显示 第几页共几页?

 

 


--  作者:有点蓝
--  发布时间:2022/10/21 8:34:00
--  
http://www.foxtable.com/webhelp/topics/1956.htm
--  作者:cnsjroom
--  发布时间:2022/10/21 23:11:00
--  回复:(有点蓝)http://www.foxtable.com/webhelp/to...

因项目设计不是在菜单中生成excel文件 而是直接代码中生成文件

假定在页首区域加入行号,格式为“第X页”?怎么理解?

然后怎么生成第几页 共几页  这样的内容呢?

 

当前代码如下:【怎么代码补正呢?】

Dim time As String =Format(Date.now,"yyyyMMddHHmmss")
Dim Book As New XLS.Book(ProjectPath & "Attachments\\台账分类按年.xls") \'打开模板

Book.Marks.Add("页号", "")
Book.Marks.Add("pg", 0)
Dim fl As String = ProjectPath & "Reports\\" & Date.Today.Year & "年" & Date.Today.Month & "台账分类按年" & time &".xls"
Dim Sheet As XLS.Sheet = Book.Sheets(0)
book.AddDataTable("登记台账","主数据源","Sel ect * from {登记台账} where 年度 = \'" & Date.Today.Year & "\'")

Book.Marks("pg") = Book.Marks("pg") + 1
Book.Marks("页号") = "第" & Book.Marks("pg") & "页" & “共”& ??? & “页”

Book.Marks.Add("页号",???) \'添加标记
Book.Build() \'生成报表
Book.Save(fl)

 

 

以下为帮助中的参考:

BuildPageHeader

生成某个页首前执行。

e参数属性:

Book: 返回工作簿。

请参考指定页首行

示例

假定需要在页首区域加入行号,格式为“第X页”。

实现步骤为:

1、设计模板的时候,在页首区域加入一个标签:<页号>

2、在BeforeBuild事件中,将两个标签插入到Marks集合:

Sele ct Case e.Book.TempLate
    Case
"模板名称"
        e.Book.Marks.Add("页号", "")
        e.Book.Marks.Add("pg", 0)
End
Sel ect

上面的代码其实加入了两个标签,模板只使用了“页号”标签,而标签“pg”则只用于在代码中记录页号。

3、在BuildPageHeader事件中加入代码:

Sele ct Case e.Book.TempLate
    Case "模板名称"
        e.Book.Marks("pg") = e.Book.Marks("pg") + 1
        e.Book.Marks("页号") = "第" & e.Book.Marks("pg") & "页"
End
Se lect

 

 

只有在直接通过系统菜单生成Excel报表的时候,才需要在BeforeBuild事件中添加标记,否则在报表生成代码中添加标记显得更为直接,例如:

Dim Book As New XLS.Book("c:\\book5.xls")
Book.Marks.Add(
"页号",User.Name) \'添加标记
Book.Build()
Book.Save(
"c:\\reports\\test.xls")
Dim
Proc As New Process
Proc.File =
"c:\\reports\\test.xls"

Proc.Start()

 

 

 

[此贴子已经被作者于2022/10/21 23:12:24编辑过]

--  作者:有点蓝
--  发布时间:2022/10/22 9:43:00
--  
不管是在菜单,还是代码生成,都可以在报表事件处理
--  作者:cnsjroom
--  发布时间:2022/10/23 14:10:00
--  回复:(有点蓝)不管是在菜单,还是代码生成,都可以...

Dim time As String =Format(Date.now,"yyyyMMddHHmmss")
Dim Book As New XLS.Book(ProjectPath & "Attachments\\台账分类按年.xls") \'打开模板

Book.Marks.Add("页号", "")
Book.Marks.Add("pg", 0)

Book.Marks.Add("pg1", 0)
Dim fl As String = ProjectPath & "Reports\\" & Date.Today.Year & "年" & Date.Today.Month & "台账分类按年" & time &".xls"
Dim Sheet As XLS.Sheet = Book.Sheets(0)
book.AddDataTable("登记台账","主数据源","Sel ect * from {登记台账} where 年度 = \'" & Date.Today.Year & "\'")

Book.Marks("pg") = Book.Marks("pg") + 1

Book.Marks("pg1") = Book.Marks("pg1") + 1    这里怎么统计共有多少页呢?
Book.Marks("页号") = "第" & Book.Marks("pg") & "页" & “共”& Book.Marks("pg1")  & “页”

Book.Build() \'生成报表
Book.Save(fl)


--  作者:有点蓝
--  发布时间:2022/10/23 20:53:00
--  
没有办法统计,除非每页的行数是固定的,那总页数就等于总行数除以每页行数