以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  WPS AND OFFICE  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=89618)

--  作者:huhu
--  发布时间:2016/8/25 15:20:00
--  WPS AND OFFICE
导出按钮代码。如果是本机装的是wps,导出的xls打开有数据且正确。另外一个同事装的是office,同样导出的是xls,有这个文件,但是打开数据是空的,这是怎么回事?
Dim r As Row = Tables("库存管理界面_table7").Current

DataTables("扫描配货明细").LoadFilter = "收货单号 = \'" & r("收货单号") & "\'  and (状态 = \'生产结束扫描完成\' or 状态 = \'生成收货单\')"
DataTables("扫描配货明细").Load

Dim ex As New Exporter
ex.SourceTableName = "扫描配货明细" \'指定导出表

ex.FilePath = "D:\\SN\\" & r("收货单号") & "_" & r("工单号行号") & ".xls"

ex.Format = "Excel" \'导出格式为Excel
ex.Fields = "SN" \'指定导出字段
ex.Export() \'开始导出

Dim n As New MailSender
n.Host = "mail.bdcom.com.cn"
n.Account = "factory@bdcom.com.cn"
n.Password = "Encrypt228HqJ4Mg"
n.From = "factory@bdcom.com.cn"
n.AddReceiver("liujiyong@bdcom.com.cn")
n.Title = "库存管理系统SN" & "工单号-行号:" & r("工单号行号") & "对应收货单号:" & r("收货单号") & "的全部序列号如附件,请打卡通"
n.AddAttachments(ex.FilePath)

n.SendAsync()
MessageBox.show("保存路径:" & ex.FilePath,"导出成功",MessageBoxButtons.OK,MessageBoxIcon.Information)

--  作者:huhu
--  发布时间:2016/8/25 16:20:00
--  
还有一个问题,假如已经存在了这个xls。就会提示下面的信息。能不让它弹出或者提示准确的xls的名称已经存在。然后直接覆盖。
.NET Framework 版本:2.0.50727.7905
Foxtable 版本:2016.7.29.1
错误所在事件:
详细错误信息:
表 \'扫描配货明细\' 已存在。

--  作者:大红袍
--  发布时间:2016/8/25 16:53:00
--  

 不要用Export导出,直接用saveExcel比较好

 

 


--  作者:huhu
--  发布时间:2016/8/25 16:58:00
--  
saveExcel应该导出是这个表吧,我只想导出这个表的SN列,其它列不需要。能指定save列吗?
--  作者:大红袍
--  发布时间:2016/8/25 17:10:00
--  
以下是引用huhu在2016/8/25 16:58:00的发言:
saveExcel应该导出是这个表吧,我只想导出这个表的SN列,其它列不需要。能指定save列吗?

 

你把不需要的列隐藏,不就行了?

 

直接用代码导出,也可以 http://www.foxtable.com/webhelp/scr/1148.htm

 


--  作者:huhu
--  发布时间:2016/8/25 17:43:00
--  
怎么导出了全部列?不是指定了SN列么。
Dim dt As Table = Tables("扫描配货明细")
Dim nms() As String = {"SN"} \'要导出的列名
Dim caps() As String = {"SN"} \'对应的列标题
Dim szs() As Integer = {150} \'对应的列宽
Dim Book As New XLS.Book \'定义一个Excel工作簿
Dim Sheet As XLS.Sheet = Book.Sheets(0) \'引用工作簿的第一个工作表

For c As Integer = 0 To nms.length -1
    Sheet(0, c).Value = caps(c) \'指定列标题
    Sheet.Cols(c).Width = szs(c) \'指定列宽
Next
For r1 As Integer = 0 To dt.Rows.Count - 1 \'填入数据
    For c As Integer = 0 To nms.length -1
        Sheet(r1 +1, c).Value = dt.rows(r1)(nms(c))
    Next
Next
Tables("扫描配货明细").SaveExcel("D:\\SN\\" & r("收货单号") & "_" & r("工单号行号") & ".xls","序列号明细")

--  作者:nblwar
--  发布时间:2016/8/25 20:09:00
--  
想起我刚开始时候傻傻的样子图片点击可在新窗口打开查看
--  作者:nblwar
--  发布时间:2016/8/25 20:13:00
--  
最后一句代码跟上面的是分开用的,你放到一起去了能行吗
--  作者:nblwar
--  发布时间:2016/8/25 20:25:00
--  
Dim t As Table = Tables("扫描配货明细")
Dim filepath As String = "D:\\SN\\" & r("收货单号") & "_" & r("工单号行号") & ".xls"

\'报表编程\'
Dim Book As New XLS.Book \'定义一个Excel工作簿
Dim Sheet As XLS.Sheet = Book.Sheets(0) \'引用工作簿的第一个工作表
Sheet(0, 0).Value = "SN"  \'指定列标题
Sheet.Cols(0).Width = 150 \'指定列宽

For r As Integer = 0 To t.Rows.Count - 1 \'填入数据
    Sheet(r + 1, 0).Value = t.rows(r)("SN")
Next
Book.Save(filepath)

\'启动
Dim Proc As New Process 
Proc.File = filepath
Proc.Start()