Foxtable(狐表)用户栏目专家坐堂 → [求助]导出


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

主题:[求助]导出

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


加好友 发短信
等级:七尾狐 帖子:1765 积分:11811 威望:0 精华:0 注册:2015/6/22 8:11:00
[求助]导出  发帖心情 Post By:2018/12/1 17:57:00 [只看该作者]

老师好,下面代码报错。


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


Dim dt As Table = Tables("订单管理")
dt.filter = "发货状态='已发货' and 订单状态='确定'"
Dim nms() As String = {"订单编号","订单日期","客户名称"} '要导出的列名
Dim caps() As String = {"订单编号","订单日期","客户名称"} '对应的列标题
Dim szs() As Integer = {100,100,100} '对应的列宽
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
        Sheet(r +1, c).Value = dt.rows(r)(nms(c))
    Next
Next
Dim dlg As New SaveFileDialog '定义一个新的SaveFileDialog
dlg.Filter= "Excel文件|*.xls" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then
    Book.Save(dlg.FileName)
    Dim Proc As New Process
    Proc.File = dlg.FileName
    Proc.Start()
End If

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


加好友 发短信
等级:狐神 帖子:4753 积分:34573 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2018/12/2 9:33:00 [只看该作者]

代码没问题,具体请上实例

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


加好友 发短信
等级:七尾狐 帖子:1765 积分:11811 威望:0 精华:0 注册:2015/6/22 8:11:00
  发帖心情 Post By:2018/12/2 16:42:00 [只看该作者]

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


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


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

修改红色代码

 

Dim dt As Table = Tables("订单管理")
dt.filter = "发货状态=true and 订单状态=true"

 


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


加好友 发短信
等级:七尾狐 帖子:1765 积分:11811 威望:0 精华:0 注册:2015/6/22 8:11:00
  发帖心情 Post By:2018/12/2 22:19:00 [只看该作者]

 谢谢老师

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


加好友 发短信
等级:七尾狐 帖子:1765 积分:11811 威望:0 精华:0 注册:2015/6/22 8:11:00
  发帖心情 Post By:2018/12/3 5:59:00 [只看该作者]

 老师,我想在原来设置代码的基础上增加功能,把数据导出到工作簿上然后根据客户的名称分散到工作表中。谢谢老师!
Dim dt As Table = Tables("订单管理")
dt.filter = "发货状态=true and 订单状态=true"
Dim nms() As String = {"订单编号","订单日期","客户名称"} '要导出的列名
Dim caps() As String = {"订单编号","订单日期","客户名称"} '对应的列标题
Dim szs() As Integer = {100,100,100,100} '对应的列宽
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
        Sheet(r +1, c).Value = dt.rows(r)(nms(c))
    Next
Next
Dim dlg As New SaveFileDialog '定义一个新的SaveFileDialog
dlg.Filter= "Excel文件|*.xls" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then
    Book.Save(dlg.FileName)
    Dim Proc As New Process
    Proc.File = dlg.FileName
    Proc.Start()
End If

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


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

Dim dlg As New SaveFileDialog '定义一个新的SaveFileDialog
dlg.Filter= "Excel文件|*.xls" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then
    Dim dt As DataTable = DataTables("订单管理")
    Dim nms() As String = {"订单编号","订单日期","客户名称"} '要导出的列名
    Dim caps() As String = {"订单编号","订单日期","客户名称"} '对应的列标题
    Dim szs() As Integer = {100,100,100,100} '对应的列宽
    Dim Book As New XLS.Book '定义一个Excel工作簿
    For Each mc As String In dt.GetValues("客户名称", "发货状态=true and 订单状态=true and 客户名称 is not null")
        Dim Sheet As XLS.Sheet = Book.Sheets.Add '引用工作簿的第一个工作表
        sheet.name = mc
        Dim drs = dt.Select("客户名称='" & mc & "' and 发货状态=true and 订单状态=true")
        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.dataCols(nms(c)).IsDate Then '如果是日期列
                Sheet.Cols(c).Style = st '设置显示格式
            End If
        Next
        For r As Integer = 0 To drs.Count - 1 '填入数据
            For c As Integer = 0 To nms.length -1
                Sheet(r +1, c).Value = drs(r)(nms(c))
            Next
        Next
    Next
    book.Sheets.RemoveAt(0)
    Book.Save(dlg.FileName)
    Dim Proc As New Process
    Proc.File = dlg.FileName
    Proc.Start()
End If

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


加好友 发短信
等级:七尾狐 帖子:1765 积分:11811 威望:0 精华:0 注册:2015/6/22 8:11:00
  发帖心情 Post By:2018/12/3 10:12:00 [只看该作者]

 老师,楼上代码能改成多层表头导出。

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


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


 回到顶部
帅哥哟,离线,有人找我吗?
江南小镇
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1765 积分:11811 威望:0 精华:0 注册:2015/6/22 8:11:00
  发帖心情 Post By:2018/12/3 11:33:00 [只看该作者]

老师休息时间也打捞你,下面代码有点搞不懂,想修改成指定的保存地址。

 Dim dlg As New SaveFileDialog '定义一个新的SaveFileDialog
dlg.Filter= "Excel文件|*.xls" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then
    Dim dt As DataTable = DataTables("订单管理")
    Dim nms() As String = {"订单_编号","订单_日期","客户名称"} '要导出的列名
    Dim caps() As String = {"订单_编号","订单_日期","客户名称"} '对应的列标题
Dim hlvl As Integer = 3
    Dim szs() As Integer = {100,100,100,100} '对应的列宽
    Dim Book As New XLS.Book '定义一个Excel工作簿
    For Each mc As String In dt.GetValues("客户名称", "发货状态=true and 订单状态=true and 客户名称 is not null")
        Dim Sheet As XLS.Sheet = Book.Sheets.Add '引用工作簿的第一个工作表
        sheet.name = mc
        Dim drs = dt.Select("客户名称='" & mc & "' and 发货状态=true and 订单状态=true")
        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.dataCols(nms(c)).IsDate Then '如果是日期列
                Sheet.Cols(c).Style = st '设置显示格式
            End If
        Next
       




'================
Dim jz As xls.style = book.NewStyle
jz.AlignHorz = XLS.AlignHorzEnum.Center
jz.AlignVert = XLS.AlignVertEnum.Center
For c As Integer = 0 To nms.length -1
    Dim ary() As String = caps(c).split("_")
    For i As Integer = 0 To ary.length-1
        sheet(i, c).value = ary(i)
        sheet(i, c).Style = jz
    Next
Next
For i As Integer = 0 To hlvl-1
    Dim pi As Integer = 0
    For c As Integer = 0 To nms.length -2
        If sheet(i,c).text = sheet(i,c+1).text Then
            Dim flag As Boolean = True
            For k As Integer = i-1 To 0 Step -1
                If sheet(k,c).value <> sheet(k,c+1).value Then
                    flag = False
                End If
            Next
            If flag Then
                pi += 1
            Else
                pi = 0
            End If
        Else
            sheet.MergeCell(i, c-pi, 1, pi+1)
            pi = 0
        End If
    Next
    sheet.MergeCell(i, nms.length-pi-1, 1, pi+1)
Next

For c As Integer = 0 To nms.length -1
    Dim pi As Integer = 0
    For i As Integer = hlvl-1 To 0 Step -1
        If sheet(i, c).text = "" Then
            pi += 1
        Else
            sheet.MergeCell(i, c, pi+1, 1)
            Exit For
        End If
    Next
Next
'-----------------------
 For r As Integer = 0 To drs.Count - 1 '填入数据
            For c As Integer = 0 To nms.length -1
                Sheet(r +1, c).Value = drs(r)(nms(c))
            Next
        Next
    Next
    book.Sheets.RemoveAt(0)
    Book.Save(dlg.FileName)
   Dim Proc As New Process
   Proc.File = dlg.FileName
   Proc.Start()
book.save("H:\test.xls")
End If

 回到顶部
总数 29 1 2 3 下一页