Foxtable(狐表)用户栏目专家坐堂 → 窗口设计中报表导出问题


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

主题:窗口设计中报表导出问题

美女呀,离线,留言给我吧!
东方电子威斯顿
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:22 积分:227 威望:0 精华:0 注册:2016/12/13 9:21:00
窗口设计中报表导出问题  发帖心情 Post By:2016/12/23 9:09:00 [只看该作者]

老师,您好,这个项目中我在窗口中增加了一个导出检验记录的按钮,但是感觉这样导出有点麻烦,这个检验记录是根据模板自动生成的,用这个按钮每次都要先把检验记录保存以后才能应用窗口,能不能直接应用这个模板呢?还有就是这个编程Dim count As Integer = 47这个数据我能不能用根据项目中的零缺陷数量自动更改呢?自己更改了好几次都不行,希望老师帮忙更改一下,谢谢!

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110750 积分:563676 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/12/23 9:24:00 [只看该作者]

上传代码或者例子说明

 回到顶部
美女呀,离线,留言给我吧!
东方电子威斯顿
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:22 积分:227 威望:0 精华:0 注册:2016/12/13 9:21:00
  发帖心情 Post By:2016/12/23 9:48:00 [只看该作者]

老师,不知道怎么回事,项目上传不了,下面是窗口按钮的代码:请老师帮忙看一下能不能解决上面的问题,谢谢!
Dim count As Integer = 47

Dim sfile As String = ProjectPath & "检验记录.xls"
Dim dfile As String = ProjectPath & "test.xls"
FileSys.CopyFile(sfile, dfile, True)
Dim book As new XLS.Book(dfile)
Dim sheet As XLS.Sheet = book.Sheets(0)
Dim nums1 As new List(Of String)
Dim nums2 As new List(Of String)
Dim nums3 As new List(Of String)
For Each dr As DataRow In DataTables("检验记录").Select("电容量_序号 is not null")
    nums1.Add(dr("电容量_测试值"))
    nums2.add(dr("损耗角正切_测试值"))
    nums3.add(dr("漏电流_测试值"))
Next
For i As Integer = 1 To 30
    If i > count Then Exit For
    sheet(62+i, 2).value = nums1(Rand.Next(count))
    sheet(62+i, 10).value = nums2(Rand.Next(count))
    sheet(62+i, 18).value = nums3(Rand.Next(count))
Next
For i As Integer = 31 To 60
    If i > count Then Exit For
    sheet(32+i, 6).value = nums1(Rand.Next(count))
    sheet(32+i, 14).value = nums2(Rand.Next(count))
    sheet(32+i, 22).value = nums3(Rand.Next(count))
Next
For i As Integer = 61 To 90
    If i > count Then Exit For
    sheet(99+i, 2).value = nums1(Rand.Next(count))
    sheet(99+i, 10).value = nums2(Rand.Next(count))
    sheet(99+i, 18).value = nums3(Rand.Next(count))
Next
For i As Integer = 91 To 120
    If i > count Then Exit For
    sheet(62+i, 6).value = nums1(Rand.Next(count))
    sheet(62+i, 14).value = nums2(Rand.Next(count))
    sheet(62+i, 22).value = nums3(Rand.Next(count))
Next
book.save(dfile)

Dim proc As new Process
proc.File = dfile
proc.Start

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110750 积分:563676 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/12/23 10:25:00 [只看该作者]

还是上传模板吧,不知道你零缺陷数量是怎么来的,也不知道模板的样式。

创建一个新项目,导入这个表的数据,把项目和模板一起上传。

上传方法:http://foxtable.com/bbs/dispbbs.asp?boardid=2&Id=78,关闭浏览器的极速模式,多试几次

 回到顶部
美女呀,离线,留言给我吧!
东方电子威斯顿
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:22 积分:227 威望:0 精华:0 注册:2016/12/13 9:21:00
  发帖心情 Post By:2016/12/23 11:02:00 [只看该作者]

这是项目和模板,
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:检验记录.xls

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:新项目.table



 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110750 积分:563676 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/12/23 12:06:00 [只看该作者]

If Tables("电解电容").Current Is Nothing Then Return
Dim count As Integer = Tables("电解电容").Current("零缺陷数量")

Dim Book As New XLS.Book(ProjectPath & "Attachments\检验记录.xls") '打开模板
Dim fl As String = ProjectPath & "Reports\检验记录.xls"
Dim Sheet As XLS.Sheet = Book.Sheets(0)

Dim nums1 As new List(Of String)
Dim nums2 As new List(Of String)
Dim nums3 As new List(Of String)
For Each dr As DataRow In DataTables("检验记录").Select("电容量_序号 is not null")
    nums1.Add(dr("电容量_测试值"))
    nums2.add(dr("损耗角正切_测试值"))
    nums3.add(dr("漏电流_测试值"))
Next
For i As Integer = 1 To 30
    If i > count Then Exit For
    sheet(62+i, 2).value = nums1(Rand.Next(count))
    sheet(62+i, 10).value = nums2(Rand.Next(count))
    sheet(62+i, 18).value = nums3(Rand.Next(count))
Next
For i As Integer = 31 To 60
    If i > count Then Exit For
    sheet(32+i, 6).value = nums1(Rand.Next(count))
    sheet(32+i, 14).value = nums2(Rand.Next(count))
    sheet(32+i, 22).value = nums3(Rand.Next(count))
Next
For i As Integer = 61 To 90
    If i > count Then Exit For
    sheet(99+i, 2).value = nums1(Rand.Next(count))
    sheet(99+i, 10).value = nums2(Rand.Next(count))
    sheet(99+i, 18).value = nums3(Rand.Next(count))
Next
For i As Integer = 91 To 120
    If i > count Then Exit For
    sheet(62+i, 6).value = nums1(Rand.Next(count))
    sheet(62+i, 14).value = nums2(Rand.Next(count))
    sheet(62+i, 22).value = nums3(Rand.Next(count))
Next

Book.Build() '生成报表
Book.Save(fl) 
'book.save(dfile)

Dim proc As new Process
proc.File = fl
proc.Start

 回到顶部