以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 分页加载数据后全部导出 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=90673) |
-- 作者:huhu -- 发布时间: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) |
-- 作者:有点蓝 -- 发布时间:2016/9/19 16:58:00 -- 打印前加载全部数据,打印完后再重新分页。 |
-- 作者:huhu -- 发布时间:2017/8/31 18:23:00 -- 比如说全部数据分页加载有5页,通过筛选分页只加载了3页,我要把这3页导出来。 按你说的导出前先全部加载数据后分页。 如果一下子全部加载数据那不导出的是5页的数据了,而不是我筛选的3页数据了吧。 ----总不能把所有的loadfilter条件都写一次吧,情况很多条件也很多。这种情况改怎么处理。 |
-- 作者:huhu -- 发布时间: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
|
-- 作者:有点甜 -- 发布时间:2017/8/31 18:27:00 -- 根据当前表格的LoadFilter,生成一个新的表格,导出那个表格,不就行了? |
-- 作者:huhu -- 发布时间:2017/9/1 11:42:00 -- 我是通过选择其他控件筛选出table(好多还是组合筛选)。难不成我导出按钮的代码,每次都需要把筛选控件的loadfilte的条件都加一次。 是不是我理解的不对啊。 我就是希望把已经筛选的出的table导出来。
|
-- 作者:有点甜 -- 发布时间:2017/9/1 12:31:00 -- 无论你怎么筛选,关键是你要导出的时候,这个时候,你的筛选条件是固定的了啊,通过filter或者loadfilter可以获取的啊。
然后根据这个条件,不分页把所有数据都弄出来,再导出。 |