将包含计算字段的Access数据导出到Excel工作表中
我正在为我的Visual Basic类做一个编程项目,我们正在使用Visual Studios 2012.我想知道的是,如果可能的话,是否有办法将Access表导出到Excel文件中(通过按菜单然后我可以把文件的名字作为文件的创build时间和date。
现在,我有一个表单,带有一个菜单条,我放置了导出到Excel的选项。
该程序使用户input他们正在发送的物品,并从衣物中接收数量。 我已经完成了从表格到Access表格的数据移动,但是我需要能够用date和时间作为文件名来创build一个包含该表格中的数据的excel文件。 我不使用VBA,我认为在这个阶段开始使用VBA可能为时已晚。 我正在使用YouTube上发现的一系列video中的技术,这里是链接:
我完全停留在这一点上,所有我寻找的解决scheme都是在VBA中,但我需要Visual Studios 2012使用的任何解决scheme。 所提供的任何帮助将非常感激,如果需要VBA,我会问你会把我作为一个初学者与任何解释或代码,因为我是一个初学者的视觉基本,我不知道如何VBA工作。
编辑:
这里描述的技术看起来很有希望,但是我想要导出的一个字段是Calculated
字段,并且触发了错误
SELECT INTO语句中不允许计算列。
也许有这个解决方法?
似乎Access不允许计算字段包含在SELECT INTO语句中。 对于名为[SampleData]的表
SampleID Prefix FirstName LastName FullName -------- ------ --------- -------- ---------------- 1 Mr Gord Thompson Mr Gord Thompson 2 Miss Anne Elk Miss Anne Elk
其中[FullName]是计算字段,如果我们尝试
using (var cmd = new OleDbCommand()) { cmd.Connection = con; cmd.CommandText = @"SELECT SampleID, FullName " + @"INTO [Excel 8.0;HDR=YES;DATABASE=C:\__tmp\zzzNew.xls].[Sheet1] " + @"FROM SampleData"; cmd.ExecuteNonQuery(); }
我们得到错误
SELECT INTO语句中不允许计算列。
但是,我们可以通过在其中一个输出列的expression式中使用计算字段来愚弄Access进行出价:
using (var cmd = new OleDbCommand()) { cmd.Connection = con; cmd.CommandText = @"SELECT SampleID, '' & FullName AS FullName " + @"INTO [Excel 8.0;HDR=YES;DATABASE=C:\__tmp\zzzNew.xls].[Sheet1] " + @"FROM SampleData"; cmd.ExecuteNonQuery(); }
(这是C#代码,但VB.NET代码将非常相似。)
编辑re:评论
要以更新的.xlsx
格式创buildExcel文档,请使用此
using (var cmd = new OleDbCommand()) { cmd.Connection = con; cmd.CommandText = @"SELECT SampleID, '' & FullName AS FullName " + @"INTO [Excel 12.0 Xml;HDR=YES;DATABASE=C:\__tmp\zzzNew.xlsx].[Sheet1] " + @"FROM SampleData"; cmd.ExecuteNonQuery(); }