Foxtable(狐表)用户栏目专家坐堂 → Excel报表如何把几个报表放在同一个Excel的不同Sheet


  共有2039人关注过本帖树形打印复制链接

主题:Excel报表如何把几个报表放在同一个Excel的不同Sheet

帅哥哟,离线,有人找我吗?
zhutangxin
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:437 积分:3755 威望:0 精华:0 注册:2016/10/14 13:40:00
Excel报表如何把几个报表放在同一个Excel的不同Sheet  发帖心情 Post By:2018/5/19 9:59:00 [只看该作者]

老师你好,
公司有几条生产线,各生产线的生产计划格式是一样的,可用同一个Excel模板生成报表,但用下面的代码生成的Excel报表存放在不同的Excel文件,有没有可能将它们存在一个Excel文件的不同Sheet?

Dim sql As String = Args(0)                        '导出表的SQL语句
Dim excel_template_fileName As String = Args(1)    '模板文件名称
Dim excel_export_fileName As String = Args(2)      '输出Excel文件的名称, 路径在MyDocuments\Report

Dim Book As New XLS.Book(ProjectPath & "Attachments\" + excel_template_fileName)
Dim fl As String = SpecialFolder.MyDocuments +  "\Reports\" + excel_export_fileName
If DataTables.Contains("h") Then DataTables.Unload("h")
book.AddDataTable("h","dbMain",sql)
Book.Build()
Dim Sheet As XLS.Sheet = Book.Sheets(0)
With Sheet.PrintSetting
    '页眉左边为日期,中间为时间,右边为表名
    .Header = "&L&""Arial""&8 &D &T &C&""Arial""&8 &Z &F"
    '在页脚右边打印页号和总页数
    .Footer = "&C&""Arial""&8 第&P页,总&N页"
End With

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106601 积分:542176 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/5/19 10:04:00 [只看该作者]

本来就可以的,在在每个sheet都设计好模板和打印条件即可。

另外页眉页脚可以在Execl里设置好,效率会高一点。如果在代码里做可以循环遍历Sheets,逐一设置

 回到顶部
帅哥哟,离线,有人找我吗?
zhutangxin
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:437 积分:3755 威望:0 精华:0 注册:2016/10/14 13:40:00
  发帖心情 Post By:2018/5/19 10:33:00 [只看该作者]

可能我问的不清楚,在下面的代码里,fl是要保存的Excel报表文件路径和文件名。用Book.Save(fl)是报表生成后作了保存动作。

在这个保存动作里希望要保存Sheet在fl里以指的Sheet名称(如sheet名为”一线生产计划“)保存。 如果fl已经存在,里面有”二线生产计划“Sheet,则在fl里新增一个Sheet"一线生产计划”。

要实现这个操作代码该怎么改?


Dim Book As New XLS.Book(ProjectPath & "Attachments\" + excel_template_fileName)
Dim fl As String = SpecialFolder.MyDocuments +  "\Reports\" + excel_export_fileName
If DataTables.Contains("h") Then DataTables.Unload("h")
book.AddDataTable("h","dbMain",sql)
Book.Build()
Dim Sheet As XLS.Sheet = Book.Sheets(0)
With Sheet.PrintSetting
    '页眉左边为日期,中间为时间,右边为表名
    .Header = "&L&""Arial""&8 &D &T &C&""Arial""&8 &Z &F"
    '在页脚右边打印页号和总页数
    .Footer = "&C&""Arial""&8 第&P页,总&N页"
End With
Sheet(Sheet.Rows.Count, 0).Value = "制单人:" & _userName
If DataTables.Contains("h") Then DataTables.Unload("h")
Book.Save(fl)

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106601 积分:542176 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/5/19 10:41:00 [只看该作者]

先在模板里新增一个Sheet"一线生产计划”,然后直接生成不就行了。

 回到顶部
帅哥哟,离线,有人找我吗?
zhutangxin
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:437 积分:3755 威望:0 精华:0 注册:2016/10/14 13:40:00
  发帖心情 Post By:2018/5/19 11:01:00 [只看该作者]

各生产线的模板是一样的,如果有五个生产线,要在模板里建5个生产线对应的Sheet名称吗?

如果是这样,那在代码中怎么告诉模板什么时候要用的是“一线生产计划”Sheet的模板,什么时候要用的是“二线线生产计划”Sheet的模板?

如果同时生成“一线生产计划”和“二线生产计划”生产计划,是不是可以保存在一个filename下?

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106601 积分:542176 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/5/19 11:09:00 [只看该作者]

在模板里建5个生产线对应的Sheet名称,定义好模板。

在生成模板的时候可以指定生成哪几个:http://www.foxtable.com/webhelp/scr/2064.htm

或者在生成前/后再删除不需要的sheet:http://www.foxtable.com/webhelp/scr/1465.htm

 回到顶部
帅哥哟,离线,有人找我吗?
zhutangxin
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:437 积分:3755 威望:0 精华:0 注册:2016/10/14 13:40:00
  发帖心情 Post By:2018/5/21 9:44:00 [只看该作者]

参考了帮助文件,用下面的代码实现了(是最后IF语句实现的)。如果有狐友需要,可以参考一下。

'本函数用于单表按设定的模板导出Excel报表
'by Hank 2018-5-18
'使用方法如下:
'Dim sql As String                       '导出表的SQL语句
'Dim excel_template_fileName As String   '模板文件名称
'Dim excel_export_fileName As String     '输出Excel文件的名称, 路径在MyDocuments\Report'
'Dim sheetName As String                 '输出Sheet名称
'Functions.Execute("ExcelReportSingleTable", sql, excel_template_fileName, excel_export_fileName, sheetName)
'
Dim sql As String = Args(0)                        '导出表的SQL语句
Dim excel_template_fileName As String = Args(1)    '模板文件名称
Dim excel_export_fileName As String = Args(2)      '输出Excel文件的名称, 路径在MyDocuments\Report
Dim sheetName As String = Args(3)                  '输出Sheet名称
Dim Book As New XLS.Book(ProjectPath & "Attachments\" + excel_template_fileName)
Dim fl As String = SpecialFolder.MyDocuments +  "\Reports\" + excel_export_fileName
Vars("fl") = fl
If DataTables.Contains("h") Then DataTables.Unload("h")
book.AddDataTable("h","dbMain",sql)
Book.Build()
Dim Sheet As XLS.Sheet = Book.Sheets(0)
With Sheet.PrintSetting
    '页眉左边为日期,中间为时间,右边为表名
    .Header = "&L&""Arial""&8 &D &T &C&""Arial""&8 &Z &F"
    '在页脚右边打印页号和总页数
    .Footer = "&C&""Arial""&8 第&P页,总&N页"
End With
Sheet(Sheet.Rows.Count, 0).Value = "制单人:" & _userName
If DataTables.Contains("h") Then DataTables.Unload("h")
If sheetName Is Nothing OrElse sheetName.Trim.Length = 0 Then sheetName = "Sheet1"
sheet.Name = sheetName

If FileSys.FileExists(fl) = False Then
    Book.Save(fl)
Else
    Dim Book1 As new XLS.Book(fl)
    Book.Sheets.Remove(sheet)
    Book1.Sheets.Add(sheet)
    Book1.Save(fl)
End If

 回到顶部