Foxtable(狐表)用户栏目专家坐堂 → 分页加载数据后全部导出


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

主题:分页加载数据后全部导出

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


加好友 发短信
等级:五尾狐 帖子:1183 积分:8236 威望:0 精华:0 注册:2015/3/30 10:44:00
分页加载数据后全部导出  发帖心情 Post By:2016/9/19 16:37:00 [只看该作者]

导出只能导出当前页加载的数据。如果是分页加载的,比如是3页,缺省只能导出第一页的。
有办法一下子把3页全部导出吗?
Dim dt As Table = Tables("临时版本跟踪表")
Dim filepath As String = "C:\临时版本跟踪表\" & startdate.Value & "-" & enddate.value & ".xls"

Dim nms() As String = {"临时版本编号","需求编号","博达机型","客户","需求提交时间","预计提供时间","开发环境","代码message","软件环境","show_version","技术支持邮箱","研发邮箱","客户期望交期","log","发布目录","测试目录","状态","状态直白","需求描述"} '要导出的列名
Dim caps() As String = {"临时版本编号","需求编号","博达机型","客户","需求提交时间","预计提供时间","开发环境","代码message","软件环境","show_version","技术支持邮箱","研发邮箱","客户期望交期","log","发布目录","测试目录","状态","状态直白","需求描述"} '对应的列标题
Dim szs() As Integer = {100,100,100,200,200,200,200,200,200,200,200,200,200,200,200,200,80,200,300} '对应的列宽
Dim Book As New XLS.Book '定义一个Excel工作簿
Dim Sheet As XLS.Sheet = Book.Sheets(0) '引用工作簿的第一个工作表
Dim st As XLS.Style = Book.NewStyle '日期列的显示格式
st.Format = "yyyy-MM-dd hh:mm:ss"
For c As Integer = 0 To nms.length -1
    Sheet(0, c).Value = caps(c) '指定列标题
    Sheet.Cols(c).Width = szs(c) '指定列宽
    If dt.Cols(nms(c)).IsDate Then '如果是日期列
        Sheet.Cols(c).Style = st '设置显示格式
    End If
Next
For r As Integer = 0 To dt.Rows.Count - 1 '填入数据
    For c As Integer = 0 To nms.length -1
        If not dt.rows(r).Isnull(nms(c)) Then Sheet(r +1, c).Value = dt.rows(r)(nms(c))
    Next
Next
Book.Save(filepath)
MessageBox.show("保存路径:" & FilePath,"导出成功",MessageBoxButtons.OK,MessageBoxIcon.Information)

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


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

打印前加载全部数据,打印完后再重新分页。



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


加好友 发短信
等级:五尾狐 帖子:1183 积分:8236 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2017/8/31 18:23:00 [只看该作者]

比如说全部数据分页加载有5页,通过筛选分页只加载了3页,我要把这3页导出来。
按你说的导出前先全部加载数据后分页。
如果一下子全部加载数据那不导出的是5页的数据了,而不是我筛选的3页数据了吧。
----总不能把所有的loadfilter条件都写一次吧,情况很多条件也很多。这种情况改怎么处理。


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


加好友 发短信
等级:五尾狐 帖子:1183 积分:8236 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2017/8/31 18:27:00 [只看该作者]

还有红色的代码,提示不支持时间格式,想体现date.now怎么办。改为date.today,会出现每次都覆盖。
Dim dt As Table = Tables("BUG录入表")
Dim filepath As String = "C:\BUG录入表\" & Date.Now & ".xls"

Dim nms() As String = {"BUG_ID","测试项目名称","项目简介","测试机型","软件版本","现象描述","怀疑模块","BUG重现类别","严重程度","状态","模块维护人","研发组长","提交人","测试组长","测试提交时间"} '要导出的列名
Dim caps() As String = {"BUG_ID","测试项目名称","项目简介","测试机型","软件版本","现象描述","怀疑模块","BUG重现类别","严重程度","状态","模块维护人","研发组长","提交人","测试组长","测试提交时间"} '对应的列标题
Dim szs() As Integer = {120,300,200,200,200,500,100,100,100,100,100,100,100,100,150} '对应的列宽
Dim Book As New XLS.Book '定义一个Excel工作簿
Dim Sheet As XLS.Sheet = Book.Sheets(0) '引用工作簿的第一个工作表
Dim st As XLS.Style = Book.NewStyle '日期列的显示格式
st.Format = "yyyy-MM-dd"
For c As Integer = 0 To nms.length -1
    Sheet(0, c).Value = caps(c) '指定列标题
    Sheet.Cols(c).Width = szs(c) '指定列宽
    If dt.Cols(nms(c)).IsDate Then '如果是日期列
        Sheet.Cols(c).Style = st '设置显示格式
    End If
Next
For r As Integer = 0 To dt.Rows.Count - 1 '填入数据
    For c As Integer = 0 To nms.length -1
        If not dt.rows(r).Isnull(nms(c)) Then Sheet(r +1, c).Value = dt.rows(r)(nms(c))
    Next
Next
Book.Save(filepath)
MessageBox.show("保存路径:" & FilePath,"导出成功",MessageBoxButtons.OK,MessageBoxIcon.Information)
DataTables("BUG录入表").load
With DataTables("BUG录入表")
    .LoadOver = "BUG_ID"
    .LoadReverse=True
    .LoadTop =  22
    .LoadPage =  0
    .Load()
    If .TotalPages = 0 Then
        .LoadPage = 0
        e.Form.Controls("TextBox1").Value = .LoadPage  & "/" & .TotalPages
    Else
        e.Form.Controls("TextBox1").Value = .LoadPage + 1  & "/" & .TotalPages
    End  If
End  With

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/31 18:27:00 [只看该作者]

根据当前表格的LoadFilter,生成一个新的表格,导出那个表格,不就行了?


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


加好友 发短信
等级:五尾狐 帖子:1183 积分:8236 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2017/9/1 11:42:00 [只看该作者]

我是通过选择其他控件筛选出table(好多还是组合筛选)。难不成我导出按钮的代码,每次都需要把筛选控件的loadfilte的条件都加一次。
是不是我理解的不对啊。
我就是希望把已经筛选的出的table导出来。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/1 12:31:00 [只看该作者]

无论你怎么筛选,关键是你要导出的时候,这个时候,你的筛选条件是固定的了啊,通过filter或者loadfilter可以获取的啊。

 

然后根据这个条件,不分页把所有数据都弄出来,再导出。


 回到顶部