以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- Excel报表如何把几个报表放在同一个Excel的不同Sheet (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=119177) |
-- 作者:zhutangxin -- 发布时间:2018/5/19 9:59:00 -- Excel报表如何把几个报表放在同一个Excel的不同Sheet 老师你好, 公司有几条生产线,各生产线的生产计划格式是一样的,可用同一个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 |
-- 作者:有点蓝 -- 发布时间:2018/5/19 10:04:00 -- 本来就可以的,在在每个sheet都设计好模板和打印条件即可。 另外页眉页脚可以在Execl里设置好,效率会高一点。如果在代码里做可以循环遍历Sheets,逐一设置
|
-- 作者:zhutangxin -- 发布时间: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)
|
-- 作者:有点蓝 -- 发布时间:2018/5/19 10:41:00 -- 先在模板里新增一个Sheet"一线生产计划”,然后直接生成不就行了。 |
-- 作者:zhutangxin -- 发布时间:2018/5/19 11:01:00 -- 各生产线的模板是一样的,如果有五个生产线,要在模板里建5个生产线对应的Sheet名称吗? 如果是这样,那在代码中怎么告诉模板什么时候要用的是“一线生产计划”Sheet的模板,什么时候要用的是“二线线生产计划”Sheet的模板? 如果同时生成“一线生产计划”和“二线生产计划”生产计划,是不是可以保存在一个filename下?
|
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间: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 |