将Excel中的特定列转移到Access表中的特定列

将Excel中的特定列转移到Access表中的特定列

问题描述:

我正试图从Excel文档中将特定列转移到Access数据库中的表中。例如我的Excel工作表可能包含以下内容:将Excel中的特定列转移到Access表中的特定列

Date Last First Gender Month School Grade 
10/1 Rode Danny Male  Sept. Ro ISD  10 
10/2 Dode Manny Male  Sept. Ro ISD  11 

而且我对我的数据库学生表可包括以下字段:

Type Source Phone Email Last First School Major School Grade 

我只希望出口标记Excel列:姓氏,名字,学校,年级,并把它们放在我学生表的各自专栏中。我已经通过访问了解VisualBasic中的DoCmd.TransferSpreadSheet,但我不确定这是否是解决方案或者是否有其他方法。任何帮助将不胜感激,因为它会减少我很多时间!谢谢!

有很多方法可以做到这一点。一种快速方法是将Excel电子表格中的所有数据导入到表格中(即“MyExcelImportTable”)。然后,您可以创建并运行一个查询,以追加所需的数据。

INSERT INTO MyStudentTable(Last, First, School, Grade) 
SELECT Last, First, School, Grade FROM MyExcelImportTable 
+0

@alpha_nom,从菜单:创建 - >查询设计。然后在最左边的Design选项卡(现在应该打开)中选择“SQL”。然后粘贴或输入代码到窗口中。然后点击“运行”图标(应该在标签条的左侧)。 – AndrewBanjo1968

+0

@alpha_nom:我忘记提及在打开设计选项卡后,您将需要关闭弹出的“显示表格”对话框,然后才能看到上方/左侧出现“SQL”按钮。 – AndrewBanjo1968

+0

会有一种方法让我在查询中添加sql代码,它告诉我由于重复的电子邮件,哪些行不附加到数据库?到目前为止,Access只会添加非重复项,但它不会告诉我哪些项无法添加,因为它们是重复项。 –

DoCmd.TransferSpreadSheet只会转移整张纸。有几个方法,你可以转移你需要什么:

  1. 复制所需的列到第二片,以及片

  2. 保存传送数据为CSV,并导入CSV,您可以在其中指定列

考虑直接从Excel工作表查询,因为两者都可以连接到Jet/ACE SQL引擎。以下假设您的工作表数据从A1开始,并带有列标题。在VBA DAO/ADO调用中集成下面的动作查询,或直接将它放在Access的查询设计(SQL模式)中。

INSERT INTO myAccessTable ([Last], [First], [School], [Grade]) 
SELECT [Last], [First], [School], [Grade] 
FROM [Excel 12.0 Xml;HDR=Yes;Database=C:\Path\To\Excel\File.xlsx].[SheetName$]