以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  报表模板生成报表时的表头问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=123904)

--  作者:aza520
--  发布时间:2018/8/26 17:12:00
--  报表模板生成报表时的表头问题
窗口生成报表的代码如下,采用用的报表模板如图一,想用1~4行做为表头,每页都能生成表头,如图二。红色代码不起作用。请问老师怎么修改?如果还想用横板中的14~15行作为每页的页脚,又该如何写代码?
Dim Book As New XLS.Book(ProjectPath & "Attachments\\变更统计表1.xlsx")
Dim fl As String = ProjectPath & "Reports\\变更统计表1.xlsx"
Dim filter As String = IIF(vars("变更信息表filter") > ""," where " & vars("变更信息表filter") & " and 承包人申报=1"," where 承包人申报=1")
book.AddDataTable("变更统计表1","xlgl","Selec t *, (selec t sum(Round((Case When 变更后数量 Is null Then 0 Else 变更后数量 End - Case When 变更前数量 Is null Then 0 Else 变更前数量 End) * Case When 单价 Is null Then 0 Else 单价 End,0))  fro m {申请费用表} b where a.项目名称=b.项目名称 and a.变更编号=b. 变更编号) As [估计变更金额] fro m {变更申请单} a " & filter)
Book.Build()
Book.Save(fl)
Dim Sheet As XLS.Sheet = Book.Sheets(0)
With Sheet.PrintSetting
    .PaperKind = 9 \'设为A4纸
    .LandScape = True \'横向打印
    .MarginLeft = 5 \'左右边距设为5毫米
    .MarginRight = 5
    .MarginTop = 15 \'上下边距设为15毫米
    .MarginBottom = 10
End With
Dim doc As New PrintDoc \'定义一个报表
Dim rt As New prt.RenderTable() \'定义一个表格对象
rt.RowGroups(0,3).Header = prt.TableHeaderEnum.All \'将1~4行作为表头.
Dim Proc As New Process
Proc.File = fl
Proc.Start()

图一:

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

图二:

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



--  作者:有点甜
--  发布时间:2018/8/26 23:13:00
--  

需要用vba处理,参考

 

http://www.foxtable.com/webhelp/scr/2121.htm

 


--  作者:aza520
--  发布时间:2018/9/7 11:15:00
--  
增加红色部分代码,想将1~4行作为每一页的表头,但显示错误,请问老师,该怎么改?

Dim Book As New XLS.Book(ProjectPath & "Attachments\\变更统计表1.xlsx")

Dim fl As String = ProjectPath & "Reports\\变更统计表1.xlsx"

Dim filter As String = IIF(vars("变更信息表filter") > ""," where " & vars("变更信息表filter") & " and 承包人申报=1"," where 承包人申报=1")

book.AddDataTable("变更统计表1","xlgl","Selec t *, (selec t sum(Round((Case When 变更后数量 Is null Then 0 Else 变更后数量 End - Case When 变更前数量 Is null Then 0 Else 变更前数量 End) * Case When 单价 Is null Then 0 Else 单价 End,0))  from {申请费用表} b where a.项目名称=b.项目名称 and a.变更编号=b. 变更编号) As [估计变更金额] fro m {变更申请单} a " & filter)

Book.Build()

Book.Save(fl)

Dim Sheet As XLS.Sheet = Book.Sheets(0)

With Sheet.PrintSetting

    .PaperKind = 9 \'设为A4

    .LandScape = True \'横向打印

    .MarginLeft = 5 \'左右边距设为5毫米

    .MarginRight = 5

    .MarginTop = 15 \'上下边距设为15毫米

    .MarginBottom = 10

End With

 

Dim App As New MSExcel.Application

Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open("Reports\\变更统计表1.xlsx")

Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(0)

With Ws.PageSetup

    \'设置打印区域

    .PrintTitleRows = Ws.Rows(0,3).Address \'打印行标题(在每一页的顶部重复出现)

End With

App.Visible = True

Ws.PrintPreview

App.Quit

 

Dim Proc As New Process

Proc.File = fl

Proc.Start()


--  作者:有点甜
--  发布时间:2018/9/7 11:52:00
--  

改成

 

.PrintTitleRows = Ws.Rows("1:3").Address \'打印行标题(在每一页的顶部重复出现)

[此贴子已经被作者于2018/9/9 16:00:35编辑过]

--  作者:aza520
--  发布时间:2018/9/7 14:25:00
--  
按老师的意见修改,显示以下错误
.NET Framework 版本:2.0.50727.8833
Foxtable 版本:2017.12.18.1
错误所在事件:窗口,变更信息表,Button22,Click
详细错误信息:
无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Excel._Application”。此操作失败的原因是对 IID 为“{000208D5-0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 加载类型库/DLL 时出错。 (异常来自 HRESULT:0x80029C4A (TYPE_E_CANTLOADLIBRARY))。


--  作者:有点甜
--  发布时间:2018/9/7 14:27:00
--  

1、

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=54396&replyID=360697&skin=1

 

2、如果1无法修复,就重新安装一下wps。


--  作者:aza520
--  发布时间:2018/9/7 14:43:00
--  
但是我注释红色这段代码就正常了。应该是代码的问题吧
--  作者:aza520
--  发布时间:2018/9/7 14:46:00
--  
以管理员身份运行,出现以下错误
找不到“Reports\\变更统计表1.xlsx”。请检查文件名的拼写,并验证文件位置是否正确。

如果您正试图从最近使用的文件列表中打开该文件,请确保该文件未被重命名、移动或删除。

--  作者:有点甜
--  发布时间:2018/9/7 15:02:00
--  
以下是引用aza520在2018/9/7 14:46:00的发言:
以管理员身份运行,出现以下错误
找不到“Reports\\变更统计表1.xlsx”。请检查文件名的拼写,并验证文件位置是否正确。

如果您正试图从最近使用的文件列表中打开该文件,请确保该文件未被重命名、移动或删除。

 

如果1无法修复,就重新安装一下wps。


--  作者:aza520
--  发布时间:2018/9/7 16:01:00
--  
我用的是excel,不是WPS