Foxtable(狐表)用户栏目专家坐堂 → 求助!根据列内容相同与否将数据导出到同一个excel的不同sheet里


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

主题:求助!根据列内容相同与否将数据导出到同一个excel的不同sheet里

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


加好友 发短信
等级:一尾狐 帖子:437 积分:3682 威望:0 精华:0 注册:2014/4/28 18:50:00
求助!根据列内容相同与否将数据导出到同一个excel的不同sheet里  发帖心情 Post By:2016/3/6 21:41:00 [只看该作者]

第一列,中有内容A,b,C,D...;将第一列为A的导出到excel文件(分组数据)的sheetA中,将第一列为B的导出到excel文件(分组数据)的sheetB中......

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/6 22:34:00 [只看该作者]

筛选后saveExcel即可,如

 

Tables("表A").Filter = "第二列 = '1'"
Tables("表A").SaveExcel("d:\test.xls", "aA")
Tables("表A").Filter = "第二列 = '2'"
Tables("表A").SaveExcel("d:\test.xls", "aB")


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


加好友 发短信
等级:六尾狐 帖子:1249 积分:9474 威望:0 精华:0 注册:2013/5/12 9:22:00
  发帖心情 Post By:2016/3/7 9:25:00 [只看该作者]

对2楼的整理

With Tables("表A")
    Dim dyl_L As List(Of String) = .DataTable.Getvalues("第一列")
    For Each dyl_ As String In dyl_L
        .Filter = "第一列 = '" & dyl_ & "'"
        .SaveExcel("d:\test.xls",dyl_)
    Next
End With

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


加好友 发短信
等级:一尾狐 帖子:437 积分:3682 威望:0 精华:0 注册:2014/4/28 18:50:00
  发帖心情 Post By:2016/3/7 15:25:00 [只看该作者]

谢谢

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


加好友 发短信
等级:六尾狐 帖子:1249 积分:9474 威望:0 精华:0 注册:2013/5/12 9:22:00
  发帖心情 Post By:2016/3/7 23:37:00 [只看该作者]

可以封装为一个函数,如下:

'根据列内容相同与否将数据导出到同一个excel的不同sheet里
Dim dlg As New SaveFileDialog
dlg.Filter = "Excel文件|*.xls"
If dlg.ShowDialog = DialogResult.OK Then
    With Tables(Args(0)) '第一个参数为"表名"       
        Dim dyl_L As List(Of String) = .DataTable.Getvalues(Args(1)) '第二个参数为"列名"
        For Each dyl_ As String In dyl_L
            .Filter = Args(1) & " = '" & dyl_ & "'"
            .SaveExcel(dlg.FileName,dyl_)
        Next
    End With
End If

以上为函数代码,其名称为:TableSaveSheetOfExcel

调用代码:Functions.Execute("TableSaveSheetOfExcel","表名","列名")

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


加好友 发短信
等级:一尾狐 帖子:437 积分:3682 威望:0 精华:0 注册:2014/4/28 18:50:00
  发帖心情 Post By:2016/3/8 15:26:00 [只看该作者]

如果是基于excel模板呢,而不是直接导出

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


加好友 发短信
等级:六尾狐 帖子:1249 积分:9474 威望:0 精华:0 注册:2013/5/12 9:22:00
  发帖心情 Post By:2016/3/8 15:35:00 [只看该作者]

直接修改Execl模板中的打印条件即可。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/8 15:40:00 [只看该作者]

参考代码,思路是,生成各个的excel报表以后,合并到一个总报表里去。

 

Dim nams As List(Of String)
nams = DataTables("进度").GetValues("模号")


Dim App As New MSExcel.Application
Dim bname As String = ProjectPath & "开单\总报表.xls"
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Add
Wb.WorkSheets(3).delete
Wb.WorkSheets(2).delete
Dim ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
For Each nam As String In nams
    If nam <> "" Then '----姓名不是空
        Dim Book As New XLS.Book ( ProjectPath & "工作集群\test.xls" )
        Dim sheet As XLS.Sheet = Book.Sheets(0)
        Tables("进度").filter = "模号 = '" & nam & "'"

        Book.Build()
        Dim fl As String = ProjectPath & "开单\" & nam & ".xls"
        Book.Save(fl) '保存工作簿
       
        Dim Wb_temp As MSExcel.WorkBook = App.WorkBooks.Open(fl)
        Dim Ws_temp As MSExcel.WorkSheet = wb_temp.WorkSheets(1)
        Ws_temp.name = nam
        Ws_temp.Copy(System.Reflection.Missing.Value, ws)
        wb_temp.close(False, System.Reflection.Missing.Value, System.Reflection.Missing.Value)
    End If
Next
ws.delete
Wb.saveas(bname)
App.Quit


Dim Proc As New Process '打开工作簿
Proc.File = bname
Proc.Start()


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


加好友 发短信
等级:四尾狐 帖子:811 积分:10952 威望:0 精华:1 注册:2008/9/2 18:58:00
  发帖心情 Post By:2016/12/6 17:57:00 [只看该作者]

 记号

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


加好友 发短信
等级:童狐 帖子:260 积分:3307 威望:0 精华:0 注册:2016/5/21 14:28:00
  发帖心情 Post By:2018/5/2 9:08:00 [只看该作者]

MARK

 回到顶部