本分步指南介绍了如何连接到Microsoft Excel、检索图纸数据以及如何使用DBGrid编辑数据。您还可以找到流程中可能出现的最常见错误的列表,以及如何处理这些错误。
以下内容包括:
Microsoft Excel是一个功能强大的电子表格计算器和数据分析工具。由于Excel工作表的行和列与数据库表的行和列密切相关,许多开发人员发现将数据传输到Excel工作簿中进行分析是合适的;然后将数据检索回应用程序。
应用程序和Excel之间最常用的数据交换方法是自动化。自动化提供了一种使用Excel对象模型读取Excel数据的方法,可以深入工作表,提取其数据,并将其显示在类似网格的组件(即DBGrid或StringGrid)中。
自动化为您在工作簿中定位数据提供了最大的灵活性,并且能够格式化工作表并在运行时进行各种设置。
要在不自动化的情况下将数据传输到Excel或从Excel传输数据,可以使用其他方法,例如:
由于Excel与JET OLE DB兼容,因此您可以使用ADO(dbGO或AdoExpress)使用Delphi连接到Excel,然后通过发出SQL查询将工作表的数据检索到ADO数据集中(就像打开任何数据库表的数据集一样)。
这样,ADODataset对象的所有方法和功能都可用于处理Excel数据。换句话说,使用ADO组件可以构建一个可以使用Excel工作簿作为数据库的应用程序。另一个重要事实是Excel是进程外ActiveX服务器。ADO在进程内运行,节省了昂贵的进程外调用的开销。
使用ADO连接到Excel时,只能与工作簿交换原始数据。ADO连接不能用于工作表格式化或将公式实现到单元格。但是,如果将数据传输到预先格式化的工作表,则会保留该格式。将应用程序中的数据插入Excel后,可以使用工作表中的(预先录制的)宏执行任何条件格式设置。
您可以使用ADO和作为MDAC一部分的两个OLE DB提供程序连接到Excel:Microsoft Jet OLE DB提供程序或用于ODBC驱动程序的Microsoft OLE DB提供程序。我们将重点介绍Jet OLE DB Provider,它可以通过可安装的索引顺序访问方法(ISAM)驱动程序访问Excel工作簿中的数据。
提示:如果您是ADO新手,请参阅DelphiADO数据库编程初学者课程。
ConnectionString属性告诉ADO如何连接到数据源。ConnectionString使用的值由ADO用于建立连接的一个或多个参数组成。
在Delphi中,TADOConnection组件封装了ADO连接对象;它可以由多个ADO数据集(TaToTable、TADOQuery等)组件通过其连接属性共享。
为了连接到Excel,有效的连接字符串只涉及两条附加信息—工作簿的完整路径和Excel文件版本。
合法连接字符串可能如下所示:
ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyWorkBooks\myDataBook.xls;Extended Properties=Excel 8.0;';连接到Jet支持的外部数据库格式时,需要设置连接的扩展属性。在我们的例子中,当连接到Excel“数据库”时,扩展属性用于设置Excel文件版本。
对于Excel 95工作簿,此值为“Excel 5.0”(不带引号);对Excel 97、Excel 2000、Excel 2002和Excel XP使用“Excel 8.0”。
重要提示:您必须使用Jet 4.0提供程序,因为Jet 3.5不支持ISAM驱动程序。如果将Jet提供程序设置为3.5版,则会收到“找不到可安装的ISAM”错误。
另一个Jet扩展属性是“HDR=”。“HDR=Yes”表示范围中有一个标题行,因此Jet不会将选择的第一行包含到数据集中。如果指定了“HDR=No”,则提供程序将在数据集中包含范围(或命名范围)的第一行。
默认情况下,范围中的第一行被视为标题行(“HDR=Yes”)。因此,如果有列标题,则不需要指定此值。如果没有列标题,则需要指定“HDR=No”。
现在您已经准备好了,这是事情变得有趣的部分,因为我们现在已经准备好编写一些代码。让我们看看如何使用Delphi和ADO创建一个简单的Excel电子表格编辑器。
注意:即使您缺乏ADO和Jet编程方面的知识,也应该继续。如您所见,编辑Excel工作簿与编辑任何标准数据库中的数据一样简单。
...个属性,可以使工作表“非常隐藏”——只需在Visual Basic编辑器中调整某个值即可。 ...
...,如果您希望任何人都可以打开文档,但如果他们要进行编辑,则要求他们输入密码,该怎么办。这种系统很容易实现。 ...
... 这种方法工作得很好,但如果您计划在以后编辑电子表格,这种方法就不理想了。例如,如果我们要在电子表格中添加一个新列,我们就有可能打破我们的公式,因为price列将不再是左边的第三列。 ...
... powerquery允许您从多个不同的源加载数据,编辑这些数据,然后将其导入Excel工作表。了解有关为什么应开始使用Microsoft Power Query的更多信息。 ...
...起应用。向表中添加新行时,将自动应用此格式。 如何编辑行底纹颜色 如果您对用于行着色的颜色不满意,可以更改它。不能直接编辑现有的Excel表格样式,但可以创建自己的样式或复制现有样式并进行编辑。 让我们看一下复...
...非常简单,而且两者的过程几乎相同。首先,同时打开要编辑的Excel工作表和PowerPoint演示文稿。 在Excel中,选择要链接或嵌入的单元格。如果要链接或嵌入整个工作表,请单击左上角行和列连接处的框以选择整个工作表。 在Wind...
...而且两者的过程几乎相同。首先同时打开Excel工作表和要编辑的Word文档。 在Excel中,选择要链接或嵌入的单元格。如果要链接或嵌入整个工作表,请单击左上角行和列连接处的框以选择整个工作表。 在Windows中按CTRL+C或在macOS中...