Foxtable(狐表)用户栏目专家坐堂 → EXCEL报表的问题


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

主题:EXCEL报表的问题

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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
EXCEL报表的问题  发帖心情 Post By:2015/7/6 20:19:00 [显示全部帖子]

EXCEL报表的合计功能 官方演示的数量,金额统计均是引用数据表中的数据实体字段

 

但一个高效的设计 里一般金额多用的是:表达式列

 

而官方在EXCEL报表引用数据不能是表达式列

 

那么在数据表中金额是表达式列时,如何在打印输出模板上统计金额的合计值呢

 

明细行中求金额:<iif([数量]*[市场价]>0,[数量]*[市场价],"")> 用此公式搞定

 

金额合计列 =SUM(INDIRECT("H7:H"&ROW()-1)) 用此公式,生成报表时显示#VALUE人工双击一下单元格时统计值能出来(但这种方式求的和要求H列不得有其它数字及日期出现)

 

问这种状况下如何求金额合计值。


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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2015/7/7 10:00:00 [显示全部帖子]

谢谢问题基本解决了,但有个小问题不好解决。

 

个别列内容可能比较长,比如 规格 列,不管你单元格设置多宽,内容总有不能全部显示的

 

在EXCEL中设置了自动换行。换行是生效了,但不能自动行高,如何处理。


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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2015/7/7 10:24:00 [显示全部帖子]

我想在报表事件中的After build中

 

Dim myExcel As MsExcel.Application  = Getobject(,"Excel.Application")
Select e.Book.TempLate
    Case "采购订单打印模板"
        Select Case e.Book.CurrentSheetName
            Case "Sheet1"
                With myExcel.Workbooks("采购订单打印模板.xls").Sheets("Sheet1")
                    .Columns("C:C").Rows.AutoFit
                End With
        End Select
End Select

但运行不正常,请修正

目的是要对生成的报表的C列进行自动 行高

[此贴子已经被作者于2015/7/7 10:29:33编辑过]

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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2015/7/7 12:15:00 [显示全部帖子]

EXCEL报表模板里面,关于打印的设置比如页眉页脚设置都能生效

 

唯独 关于标题行等有关工作表的设置不生效,被清空了

 

那么FT如何通过命令行设置 打印时的标题行了呢


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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2015/7/7 12:49:00 [显示全部帖子]

以下是引用大红袍在2015/7/7 10:39:00的发言:
Select e.Book.TempLate
    Case "采购订单打印模板"
        Dim App As New MSExcel.Application
        Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(ProjectPath & "Report/采购订单打印模板.xls")
        Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
        Dim Rg As MSExcel.Range = Ws.Cells
        'Rg.EntireColumn.AutoFit   '自动调整列宽
        Rg.EntireRow.AutoFit  '自动调整行高
        'Rg.WrapText = True
        'App.Visible = True
        wb.Save
        app.Quit
End Select

这段代码 要放报表事件哪里

我放在After Build中

系统提示找不到文件,说明此时该文件还未生成

 


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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2015/7/7 18:35:00 [显示全部帖子]


 Book.Build() '生成细节区
Book.Save(fl) '保存

Dim Proc As New Process '打开PDF文件
Proc.File = fl
Proc.Start()

 

用该方法生成EXCEL报表后,仅EXCEL图标在任务栏中闪闪的,需要单击一下才最大化显示出来

如何 让EXCEL报表一打开就最大化并且在最前面呢


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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2015/7/7 19:43:00 [显示全部帖子]

成功

 

LockBaseMainForm() '锁定主界面
Dim ydsll As WinForm.NumericComboBox = e.Form.Controls("NumericComboBox1")
If CDbl(ydsll.value)< 1Then
    ydsll.value = 1
End If
Dim ydsll2 As WinForm.NumericComboBox = e.Form.Controls("NumericComboBox2")
If CDbl(ydsll2.value)< 1Then
    ydsll2.value = 1
End If
Dim Book As New XLS.Book(ProjectPath & "Attachments\采购订单打印模板A.xls")
Dim fl As String = ProjectPath & "Reports\采购订单打印模板A.xls"
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Sheet(5,0).Value = "<采购明细," & -ydsll.value &">"
Sheet.Rows(5).Height = CDbl(ydsll2.value)
Book.Build() '生成细节区
Book.Save(fl) '保存工作簿
Dim myExcel1 As New MsExcel.Application
myExcel1.Visible=True
myExcel1.Workbooks.Open(fl)
ShowAppWindow("采购订单打印模板A.xls",2)
UnLockBaseMainForm() '解锁主界面
With myExcel1.ActiveSheet   
    .PrintPreview
End With
myExcel1.ActiveWorkbook.Saved=True
myExcel1.quit

 

这段 代码生成打印预览窗口

在生成显示过程中,屏幕明显的有闪烁感

 

如何让屏幕不闪,预览窗口生成好后,再一次性显示。


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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2015/7/8 10:20:00 [显示全部帖子]

ShowAppWindow("采购订单打印模板A.xls",2) 能保证 该窗口最大化显示,但也有时并不保证窗口显示在最前面


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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2015/7/8 10:43:00 [显示全部帖子]

是的,原设计 时规划时就少了个功能,将窗口置前,貌似调用WINDOWS API函数可以做到将某窗口强制置前。

 回到顶部