2.5 数据的导出与导入
数据的导出/导入操作可实现各类不同数据文档的格式互换,这样Access可以使用其他应用程序的数据(如Excel工作簿),Excel等软件也可以使用转换后的Access数据表,从而实现数据资源的共享。
2.5.1 数据的导出
在导航窗格中选定需要导出的表对象,在“外部数据”选项卡“导出”组中进行选择,如图2-58(a)所示;或者右击需要导出的表对象,在弹出的快捷菜单中选择“导出”命令,并进一步选择导出数据的格式,如图2-58(b)所示。
图2-58 数据表导出
1.导出为Excel工作表
Excel是比较流行的数据文件格式,经常会有Access与Excel共享数据的需求。
【例2-20】将“研究生”表导出为一个名为“研究生”的工作表。
(1)在导航窗格右击“研究生”表,在弹出的快捷菜单中选择“导出”→“Excel”命令,弹出图2-59所示的对话框。
图2-59 选择数据导出操作的目标
(2)在对话框中选择文件格式为“Excel工作簿(*.xlsx)”类型,文件名为“研究生.xlsx”,单击“确定”按钮。
(3)在弹出的“保存导出步骤”对话框中,直接单击“关闭”按钮。
注意:如果“研究生”工作簿已存在,则“研究生”数据表将复制成其中的一个名为“研究生”的工作表;如果“研究生”工作簿不存在,系统先创建一个“研究生”工作簿,再建立一个“研究生”工作表,如图2-60所示。
图2-60 导出的Excel工作表
2.导出为文本文件
文本文件是不带控制格式字符的文件,许多应用程序都能识别文本文件,是各种类型应用程序之间交换数据的常用文件格式。导出时,可以选择“文本文件”,还需作进一步设置,如数据项之间的隔离方式,为数据项加上双引号等。
【例2-21】将“研究生”表导出为“研究生.txt”文本文件。
(1)在导航窗格右击“研究生”表,在弹出的快捷菜单中选择“导出”→“文本文件”命令,弹出图2-59所示的对话框(类似),设置文件名为“研究生.txt”,单击“确定”按钮,弹出“导出文本向导”对话框。
(2)在“导出文本向导”的第1个对话框中,决定文本数据的格式细节。文本数据或者用统一的宽度相区别,或者用双引号区别(数值型和日期型数据无双引号),这里选择“固定宽度”单选按钮,如图2-61所示。设置后单击“下一步”按钮。
图2-61 选择文本的导出格式
(3)在“导出文本向导”的第2个对话框中,设置字段的分隔位置(注意光标处的虚线),如图2-62所示。然后单击“下一步”按钮。
图2-62 拖动分隔线箭头决定列宽
(4)在“导出文本向导”的第3个对话框中,单击“完成”按钮,并在随后出现的对话框中单击“确定”按钮,至此数据表导出成文本文件的操作全部结束。生成的文本文件内容如图2-63所示。
3.导出为HTML文档
HTML是网页文件的格式,数据表导出为HTML文档就是将数据表中的数据转换成可通过浏览器访问的Web文件。导出时选择“HTML文档”即可。用IE打开的通过“研究生”表导出的HTML文档如图2-64所示。
图2-63 “研究生”文本文件的部分内容
图2-64 在IE中打开的HTML文档
2.5.2 数据的导入
导入是导出的逆过程。数据的各种导入操作可以通过快捷菜单中的“导入”命令,也可以通过“外部数据”选项卡中的“导入并链接”组进行。
【例2-22】将例2-20生成的“研究生”工作表导入为Access数据表“研究生2”。
(1)单击“外部数据”选项卡“导入并链接”组中的“Excel”按钮,弹出图2-65所示的“获取外部数据-Excel电子表格”对话框。数据可导入成一个新表,也可以追加到一个已存在的表中。如果是追加,则两个表的结构要相同或兼容,且新数据进入后不得违反各类完整性约束。本例文件名选择“研究生.xlsx”,选中“将源数据导入当前数据库的新表中”单选按钮,单击“确定”按钮,弹出“导入数据表向导”对话框。
图2-65 选择数据源和目标
(2)在“导入数据表向导”的第1个对话框中,为数据表选择合适的工作表或区域,如图2-66所示。本例采用默认的“显示工作表”选项,直接单击“下一步”按钮。
图2-66 向导1:选择工作表或区域
(3)在“导入数据表向导”的第2个对话框中,设置列标题是否作为表的字段名称,如图2-67所示。默认选择“第一行包含列标题”复选框,即让“学号”“姓名”等成为数据表的字段名。直接单击“下一步”按钮。
图2-67 向导2:决定字段标题
(4)在“导入数据表向导”的第3个对话框中,选择需要导入的工作表字段,如图2-68所示。默认为全部导入。如果哪列无须导入,可以选定该列,同时选中“不导入字段(跳过)”复选框;如果需要,还可为即将导入的字段创建索引。本例保持默认设置,直接单击“下一步”按钮。
图2-68 向导3:选择导入的字段
(5)在“导入数据表向导”的第4个对话框中,选择是否需要设定主键,如图2-69所示。若选择“让Access添加主键”单选按钮,则数据表将新增一个“ID”字段,其值是从1开始的自然数,用以标识不同的记录。本例选择“我自己选择主键”单选按钮,并通过右侧的下拉列表框选择“学号”字段为表的主键,单击“下一步”按钮。
(6)在“导入数据表向导”的第5个对话框中,确定新数据表的名称,如图2-70所示。本例将新表命名为“研究生2”,然后单击“完成”按钮,在弹出的“保存导入步骤”对话框中直接单击“关闭”按钮结束导入工作。
图2-69 向导4:为新表定义主键
图2-70 向导5:输入新数据表的名称
说明:Excel是电子表格软件,其工作表不存在结构的概念,因此导入形成的数据表的结构很粗糙。观察“研究生2”的设计视图,可发现姓名、性别等文本型字段的长度为255字符,是文本类型允许的最大长度,入学分数则使用了双精度型,对存储空间造成了极大的浪费。因此数据导入完成后,应该在设计视图中对字段的类型、长度进行适当修改。
2.5.3 数据的链入
2.4.2节通过导入操作将一个Excel工作表转变成Access数据库中的数据表。导入操作完成后,在“研究生管理”数据库中添加了“研究生2”表,这个数据表与数据源“研究生.xlsx”中的“研究生”工作表没有任何联系,即当Access的“研究生2”表数据变化时,“研究生”工作表不会有变化;反之“研究生”工作表中的数据更新也不会影响到“研究生2”数据表。但在很多场合需要Access与Excel共享一组数据,任何一方对数据的编辑要让另一方共同使用,Access提供的数据链入操作可实现这个目的。
数据链入操作可实现这个目的。
【例2-23】将例2-20生成的“研究生”工作表链入“研究生管理”数据库中。
链入数据源的操作与导入数据相似:
(1)单击“外部数据”选项卡“导入并链接”组中的“Excel”按钮,弹出图2-65所示的对话框。本例文件名选择“研究生.xlsx”,选中“通过创建链接表来链接到数据源”单选按钮,单击“确定”按钮,弹出“链接数据表向导”对话框。
(2)在向导的第1个对话框中(类似图2-66),为数据表选择合适的工作表或区域,本例保持默认,直接单击“下一步”按钮;在向导的第2个对话框中(类似图2-67),设置列标题是否作为表的字段名称,本例保持默认,直接单击“下一步”按钮;在向导的第3个对话框中(类似图2-70),确定链接表的名称。本例将链接表命名为“研究生3”,然后单击“完成”按钮结束链入工作。导航窗格中表对象中多了个链接表“研究生3”,如图2-71所示。
图2-71 表对象中的链接表
观察图2-71,可发现链接表的图标与一般的表不相同,明显带有数据源Excel工作簿的特征,这是因为“研究生3”仅仅是一个链接对象,它本身并没有数据,数据依然保存在Excel工作簿中,Access与Excel都可以对这些数据进行浏览、编辑。因此,打开链接表时看到的数据实际上是Excel工作表,一旦“研究生”工作簿被删除或重命名,打开“研究生3”链接表时将弹出图2-72所示的出错信息提示对话框。
图2-72 失去数据源将无法打开链接表