Foxtable(狐表)用户栏目专家坐堂 → 窗体表复选框 怎么根据选择的行来生成对应的excel模板文件呢?


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

主题:窗体表复选框 怎么根据选择的行来生成对应的excel模板文件呢?

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
窗体表复选框 怎么根据选择的行来生成对应的excel模板文件呢?  发帖心情 Post By:2022/3/31 9:43:00 [只看该作者]

窗体表复选框  怎么根据选择的行来生成对应的excel模板文件呢?

 

Dim rs As List(of Row) = Tables(e.Form.Name & "_table1").GetCheckedRows
Dim Book As New XLS.Book(ProjectPath & "Attachments\廉政档案目录正面.xlsx")
Dim Proc As New Process
Dim fl As String = ProjectPath & "Reports\廉政档案目录正面.xlsx"
If rs.Count > 0 Then '如果存在符合条件的行
    For Each bb As Row In rs '逐行生成报表
        Book.Build() '生成细节区
    Next
End If
Book.Save(fl) '保存工作簿
'Proc.File = fl
'Proc.Start()

 

运行提示

无法将类型为“C1.C1Excel.XLPictureShape”的对象强制转换为类型“System.IConvertible”。

 

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.5.29.8
错误所在事件:
详细错误信息:
表单名称必须唯一。

 

 

 

 

如下代码:

Dim Book As New XLS.Book(ProjectPath & "Attachments\廉政档案目录正面.xlsx")
Dim fl As String = ProjectPath & "Reports\廉政档案目录正面.xlsx"
Book.Build() '生成细节区
'Book.Sheets(0).Rows.RemoveAt(0) '删除第一行,Excel报表的第一行通常是标记行
Book.Save(fl) '保存工作簿
Dim Proc As New Process '打开工作簿
Proc.File = fl
Proc.Start()

运行的时候  会把当前所有表行数据生成     有时候不是需要所有的都打印  需要打印部分 或者一条  

有没有更好的办法呢?

[此贴子已经被作者于2022/3/31 9:44:40编辑过]

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


加好友 发短信
等级:超级版主 帖子:107739 积分:548028 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/31 9:56:00 [只看该作者]

参考:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=169635&replyID=142779&skin=1

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)参考:http://www.foxtable.com/bbs/...  发帖心情 Post By:2022/3/31 10:35:00 [只看该作者]

当前代码如下:

Dim Proc As New Process
Dim lst As New List(of String)
For Each r As Row In Tables(e.Form.Name & "_table1").GetCheckedRows
    lst.add(r("_Identify"))
Next
If lst.count = 0 Then Return
Tables(e.Form.Name & "_table1").filter = "_Identify in (" &string.join(",",lst.toarray)  & ")"   ‘可以弹出对应选择的三条数据的主键值’

Dim Book As New XLS.Book(ProjectPath & "Attachments\廉政档案目录正面.xlsx")
Dim fl As String = ProjectPath & "Reports\廉政档案目录正面.xlsx"
Book.Build()
Book.Save(fl)
Proc.File = fl
Proc.Start()

 

运行效果:【所选择的  和所打印的  没有起效果】


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

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

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


加好友 发短信
等级:超级版主 帖子:107739 积分:548028 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/31 10:40:00 [只看该作者]


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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)http://www.foxtable.com/webhelp/to...  发帖心情 Post By:2022/3/31 11:09:00 [只看该作者]

老师 红色部分代码在运行的时候会进行数据筛选  有没有办法不筛选  直接在选择复选框的情况下  就生成所选择的部分内容呢?

Dim Proc As New Process
Dim lst As New List(of String)
For Each r As Row In Tables(e.Form.Name & "_table1").GetCheckedRows
    lst.add(r("_Identify"))
Next
If lst.count = 0 Then Return
Tables(e.Form.Name & "_table1").filter = "_Identify in (" &string.join(",",lst.toarray)  & ")"

Dim Book As New XLS.Book(ProjectPath & "Attachments\廉政档案目录正面.xlsx")
Dim fl As String = ProjectPath & "Reports\廉政档案目录正面.xlsx"
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Sheet(1,0).Value = "<廉政档案综述_table1,@4>"   '细节区定义一
Sheet(4,0).Value =  "<廉政档案综述_table1>"   '细节区定义二
Book.Build()
Book.Save(fl)
Proc.File = fl
Proc.Start()
Tables(e.Form.Name & "_table1").filter = ""


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


加好友 发短信
等级:超级版主 帖子:107739 积分:548028 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/31 11:10:00 [只看该作者]

没有办法不筛选

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)没有办法不筛选  发帖心情 Post By:2022/3/31 11:54:00 [只看该作者]

有没有办法不用勾选框  直接用鼠标选定行的方式呢?

这样的话是不是可以不用筛选了  直接就鼠标选择行操作了


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


加好友 发短信
等级:超级版主 帖子:107739 积分:548028 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/31 13:32:00 [只看该作者]

鼠标只能选择连续的行。可以改为使用逻辑列勾选

 回到顶部