Foxtable(狐表)用户栏目专家坐堂 → 导出成EXCEL,怎么按选择列导出?


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

主题:导出成EXCEL,怎么按选择列导出?

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


加好友 发短信
等级:二尾狐 帖子:590 积分:3858 威望:0 精华:0 注册:2012/10/15 20:39:00
导出成EXCEL,怎么按选择列导出?  发帖心情 Post By:2014/2/4 13:44:00 [只看该作者]

示例四

将产品PD01的订单导出为Excel格式保存,并只导出指定的列:

Dim ex as New Exporter
ex
.SourceTableName = "订单" '指定导出
ex
.FilePath = "c:\Data\订单.xls" '指定目标文件
ex.Format = "Excel"
'导出格式为Excel
ex.Fields = "日期,客户,数量,单价"
'指定导出字段
ex.Filter = "[产品] = 'PD01'"
'指定导出条件
ex.Export()
'开始导出

 

帮助里面这个是按列导出的,但是,会把整个表里面的内容都导出来了。

 

我想要的是把筛选后的结果的内容,再按照选择的列导出来。

 

----------------------------------------------------------------------

Dim dt As Table = Tables("订单")
Dim
Book As New XLS.Book '定义一个Excel工作簿
Dim
Sheet As XLS.Sheet = Book.Sheets(0) '引用工作簿的第一个工作表
Dim
Style As Xls.Style = Book.NewStyle '新建一个样式
Style.BackColor = Color.Red '样式的背景颜色设为红色
For
c As Integer = 0 To dt.Cols.Count -1 '添加列标题
    Sheet(0, c).Value = dt.Cols(c).Name
Next
For
r As Integer = 0 To dt.Rows.Count - 1 '填入数据
   
For c As Integer = 0 To dt.Cols.Count -1
        Sheet(r +1, c).Value = dt.rows(r)(c)
    Next
    If
dt.rows(r)("折扣") >= 0.15 Then '如果折扣大于等于0.15
        Sheet(r + 1,dt.Cols("折扣").Index).Style = Style '设置折扣单元格的样式
   
End If
Next

'打开工作簿

Book.Save("c:\reports\test.xls")
Dim Proc As New Process
Proc.File =
"c:\reports\test.xls"
Proc.Start()

-----------------------------------------------------------

帮助里面的这个代码可以把筛选后的内容导出来,

但是却不可以选择列。

 

请求帮助!


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


加好友 发短信
等级:狐神 帖子:4752 积分:34568 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2014/2/4 13:58:00 [只看该作者]

示例四我这里测试是正常的

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


加好友 发短信
等级:二尾狐 帖子:590 积分:3858 威望:0 精华:0 注册:2012/10/15 20:39:00
  发帖心情 Post By:2014/2/4 14:11:00 [只看该作者]

它不是整个表的内容都导出去了吗?

你加个筛选按钮,筛选一下,比如原来100行,剩下30行,你再导出,看看导出去的是30行,还是原来的100行?

我要的是导出去的30行,不是100行。


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


加好友 发短信
等级:狐神 帖子:4752 积分:34568 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2014/2/6 0:57:00 [只看该作者]

示例四

将产品PD01的订单导出为Excel格式保存,并只导出指定的列:

Dim ex as New Exporter
ex
.SourceTableName = "订单" '指定导出
ex
.FilePath = "c:\Data\订单.xls" '指定目标文件
ex.Format = "Excel" '导出格式为Excel
ex.Fields = "日期,客户,数量,单价" '指定导出字段
ex.Filter = "[产品] = 'PD01'" '指定导出条件
ex.Export() 
'开始导出


导出条件改为以下即可
ex.Filter =  Tables("订单").Filter 

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


加好友 发短信
等级:二尾狐 帖子:590 积分:3858 威望:0 精华:0 注册:2012/10/15 20:39:00
  发帖心情 Post By:2014/2/6 6:51:00 [只看该作者]

以下是引用y2287958在2014-2-6 0:57:00的发言:

示例四

将产品PD01的订单导出为Excel格式保存,并只导出指定的列:

Dim ex as New Exporter
ex
.SourceTableName = "订单" '指定导出
ex
.FilePath = "c:\Data\订单.xls" '指定目标文件
ex.Format = "Excel" '导出格式为Excel
ex.Fields = "日期,客户,数量,单价" '指定导出字段
ex.Filter = "[产品] = 'PD01'" '指定导出条件
ex.Export() 
'开始导出


导出条件改为以下即可
ex.Filter =  Tables("订单").Filter 

经过测试,是不行的,还是把整个表里面的都导出来了。这是问题一。

问题二就是,当导出的目录下面有整个表时,会提示有表并出错。能不能设置代码直接覆盖就行了。不要提示。


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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/2/6 8:47:00 [只看该作者]

经过测试,完全正常:

Dim ex As New Exporter
ex.SourceTableName = "订单" '指定导出表
If FileSys.FileExists("c:\Data\订单.xls") Then
    FileSys.DeleteFile("c:\Data\订单.xls")
End If
ex.FilePath = "c:\Data\订单.xls" '指定目标文件
ex.Format = "Excel" '导出格式为Excel
ex.Fields = "日期,客户,数量,单价" '指定导出字段
ex.Filter = Tables("订单").Filter '指定导出条件
ex.Export() '开始


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


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

如果还是不行的话,就应该是楼主的操作问题了。 不妨上传自己觉得不行的例子,大家一起找找问题。

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


加好友 发短信
等级:二尾狐 帖子:590 积分:3858 威望:0 精华:0 注册:2012/10/15 20:39:00
  发帖心情 Post By:2014/2/6 10:58:00 [只看该作者]

你筛选后,导出的还是所有的结果。

你测试一下..

比如说原来有42行,筛选后有15行,那么应该导出15行的,结果还是导出了42行。

不是导出了那一列,是行...

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:动态加载实例.rar

[此贴子已经被作者于2014-2-6 11:03:55编辑过]

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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/2/6 11:22:00 [只看该作者]

楼主是记忆型选手,不是分析型选手。

你的项目中只有DataTables("应收货款").LoadFilter,没有Tables("应收货款").Filter,就是说ex.Filter = ""

ex.Filter = Tables("应收货款").Filter

改成:

ex.Filter = DataTables("应收货款").LoadFilter

就行了。


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


加好友 发短信
等级:二尾狐 帖子:590 积分:3858 威望:0 精华:0 注册:2012/10/15 20:39:00
  发帖心情 Post By:2014/2/6 11:27:00 [只看该作者]

谢谢老师,由于是刚刚学习,很多都不懂,多多见谅!

 回到顶部