以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请问在导出时能否选择所需要的列  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=110836)

--  作者:hopestarxia
--  发布时间:2017/12/10 22:25:00
--  请问在导出时能否选择所需要的列
请在要导出窗口中的Table表时,能不能可以选择需要导出的列?
--  作者:hopestarxia
--  发布时间:2017/12/10 22:49:00
--  
注:不是要提前写好在代码里的,是想点导出时能出来一个对话框,可以选择需要导出的列。
--  作者:有点甜
--  发布时间:2017/12/10 23:29:00
--  

参考

 

http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=109839&authorid=0&page=0&star=3

 


--  作者:hopestarxia
--  发布时间:2017/12/11 15:50:00
--  
老师,请问导出选择列的这个代码出来的是要导出的表的表列的列名,列名设计数据库时都是用的拼音代表了,请问能用表的标题吗?
或是自己定义列名。

Dim lieming As WinForm.CheckedListBox = e.Form.Controls("lieCheckedListBox")
Dim s As String
  For Each c As Col In Tables("GXGL").cols
            s=s &"|"& c.Name
        Next
        lieming.ComboList=s

--  作者:有点甜
--  发布时间:2017/12/11 15:57:00
--  

可以这样写,在最后打印的代码那里,也要对应略微修改代码。

 

Dim lieming As WinForm.CheckedListBox = e.Form.Controls("lieCheckedListBox")
Dim s As String
For Each c As Col In Tables("GXGL").cols
    s=s & "|" & c.caption & "(" & c.name & ")"
Next
lieming.ComboList=s


--  作者:hopestarxia
--  发布时间:2017/12/11 16:43:00
--  
老师我这是选择后按选择的列导出EXCEL表,我最早的导出的按钮代码如下,现在已经不能用了。

Dim dlg As New SaveFileDialog \'定义一个新的SaveFileDialog
dlg.Filter= "Excel文件|*.xls" \'设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
    Tables("gxms").SaveExcel(dlg.FileName, "基础个性资料信息表")  \'保存文件
    MessageBox.show("导出成功")
End If

参考帮助说明,提示在表中找不到对应的列。
Dim ckl As WinForm.CheckedListBox = e.Form.Controls("lieCheckedListBox")
Dim nms As New List(of String)
For i As Integer = 0 To ckl.Items.count - 1 \'获取已经勾选的列
    If ckl.GetItemChecked(i) Then
        nms.Add(ckl.Items(i))
    End If
Next
看意思是应该在这一步写代码做转换,不知道该 怎么操作。请老师指导。
-----------------------------------------------------------------------------------------

If nms.Count = 0 Then
    MessageBox.Show("至少要选择一列","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Return
End If 
\'生成Excel表
Dim dt As Table = Tables("GXGL")
Dim Book As New XLS.Book 
Dim Sheet As XLS.Sheet = Book.Sheets(0) 
For i As Integer = 0 To nms.count -1
    Sheet(0, i).Value = nms(i)
Next
For r As Integer = 0 To dt.Rows.Count - 1 \'填入数据
    For i As Integer = 0 To nms.count -1
        Sheet(r + 1, i).Value = dt.rows(r)(nms(i))
    Next
Next 
\'保存并打开excel文件
Book.Save("c:\\reports\\test.xls")
Dim Proc As New Process
Proc.File = "c:\\reports\\test.xls"
Proc.Start()



--  作者:有点蓝
--  发布时间:2017/12/11 17:45:00
--  
Dim ckl As WinForm.CheckedListBox = e.Form.Controls("lieCheckedListBox")
Dim nms As New List(of String)
For i As Integer = 0 To ckl.Items.count - 1 \'获取已经勾选的列
    If ckl.GetItemChecked(i) Then
        nms.Add(ckl.Items(i).split("(")(1).replace(")","")) \'这里对应5楼的用法进行解析
    End If
Next
[此贴子已经被作者于2017/12/11 20:36:39编辑过]

--  作者:hopestarxia
--  发布时间:2017/12/11 18:22:00
--  
老师,出现了运行错误窗口,内容"索引起出了数组界限"的提示。
--  作者:有点甜
--  发布时间:2017/12/11 18:57:00
--  
以下是引用hopestarxia在2017/12/11 18:22:00的发言:
老师,出现了运行错误窗口,内容"索引起出了数组界限"的提示。

 

做个实例发上来测试下。


--  作者:hopestarxia
--  发布时间:2017/12/11 20:06:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:系统管理.rar


老师附件已上传;
软件版本:开发版最新版,数据库SQL2005,

问题所在:软件窗口(货品列表),打开后点上面的“导出”按钮,想选择列后导出到EXCEL,结果在“导出选择”的窗口上的"导出“按钮那里报错了。,