以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  导出成EXCEL,怎么按选择列导出?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=45576)

--  作者:小刚
--  发布时间:2014/2/4 13:44:00
--  导出成EXCEL,怎么按选择列导出?

示例四

将产品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
--  发布时间:2014/2/4 13:58:00
--  
示例四我这里测试是正常的
--  作者:小刚
--  发布时间:2014/2/4 14:11:00
--  

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

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

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


--  作者: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 

--  作者:小刚
--  发布时间: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
--  发布时间: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
--  发布时间:2014/2/6 9:58:00
--  
如果还是不行的话,就应该是楼主的操作问题了。 不妨上传自己觉得不行的例子,大家一起找找问题。
--  作者:小刚
--  发布时间:2014/2/6 10:58:00
--  

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

你测试一下..

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

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

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

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

--  作者:lsy
--  发布时间:2014/2/6 11:22:00
--  

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

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

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

改成:

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

就行了。


--  作者:小刚
--  发布时间:2014/2/6 11:27:00
--  
谢谢老师,由于是刚刚学习,很多都不懂,多多见谅!