我正在为我的Visual Basic类做一个编程项目,我们正在使用Visual Studios 2012.我想知道的是,如果有可能的话,是否有办法将Access表导出到Excel文件中(通过按下表单中的菜单项,然后我可以将文件名作为创建文件的时间和日期。
现在,我有一个带有菜单条的表单,我在其中放置了导出到Excel的选项。
该程序让用户输入他们正在发送和接收的数量的衣物。我已经完成了从表单到Access表的数据移动,但我需要能够创建一个excel文件,其中包含该表中的数据,日期和时间作为文件名。我没有使用VBA,我认为在项目的这个阶段开始使用VBA可能为时已晚。我正在使用我在YouTube上发现的一系列视频中的技术,这里是链接:
https://www.youtube.com/watch?v=07ioTflBrHQ
我完全坚持这一点,我寻找的所有解决方案都在VBA中,但我需要Visual Studios 2012正在使用的任何内容。任何提供的帮助都将非常感激,如果需要VBA,我会要求您将初学者视为您可能有的任何解释或代码,因为我是Visual Basic的初学者,我不知道VBA是如何工作的。
编辑:
所描述的技术here看起来很有希望,但我要导出的一个字段是Calculated
字段,它会触发错误
SELECT INTO语句中不允许计算列。
也许这有一个解决方法?
答案 0 :(得分:2)
似乎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语句中不允许计算列。
但是,我们可以通过在其中一个输出列的表达式中使用计算字段来欺骗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代码非常相似。)
编辑重新评论
要以较新的.xlsx
格式创建Excel文档,请使用此
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();
}