仅使用 MS Office 和 C# 比较表的最佳方法

本文关键字:比较 最佳 方法 MS Office | 更新日期: 2023-09-27 17:56:01

致力于一个关于效率和数据的宠物项目,这是使命宣言:

我有一个带有 x 个表的 Access DB,每个表包含超过 2000 个到最多大约 15000 个条目,格式为 [装运][框][序列号][名称][区域]。现在,我有另一个表(称为 Bluuur),其中包含 n 个条目,我想将此表(包含序列号)与 Access DB 中的所有表进行比较,并返回串行匹配项以及匹配的记录的名称。所以输出应该是这样的:Timmy 360(比较Timmy与Bluuur有360场比赛)

注意:我正在开发一个应用程序来执行此操作

仅使用 MS Office 和 C# 比较表的最佳方法

我会将 OleDbConnection 与连接字符串一起使用,如下所示:

OleDbConnection connToFile = new OleDbConnection(String.Format(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}; Extended Properties=""Excel 8.0;HDR=Yes"";", fileName));

与 MS Access 类似。然后将两个表加载到内存中并进行比较。

更新好的,对不起,我最初没有收到你的问题。答案将更多地取决于要求:

  1. XLS 中的表是静态的还是动态的?如果是静态的,则将XLS导入MS Access,如果您只需要获取供自己使用的值,请使用查询编辑器选择并联接表,例如:选择 a.Name,从表A中计数(b.ID)一个内部连接表B b on a.Name = b.Name 分组 a.Name
  2. 如果 XLS 中的表是动态的,但您需要再次出于自己的目的使用它,请在 MS Access 中创建对该 XLS 文件的链接数据源,并再次使用查询编辑器执行选择。
  3. 如果所有这些的目的是让网页/应用程序连接到Microsoft Access和XLS并将连接数据,并且会定期执行此操作,那么您有2个潜在的解决方案:在内存中执行此操作,或使用保存的查询执行此操作,然后使用OleDbConnection/OleDbDataAdapter将数据加载到应用程序中并显示给用户。就性能而言,内存方法可能不是最好的,因此请编写 MS Access 查询,该查询将根据需要联接和分组数据,并使用 OleDbConnection 连接 MS Access MDB 文件并执行查询。或者,如果需要对 MS Access 中的多个表执行此操作,请直接在代码中自行编写查询文本,为每个联接执行,然后对结果求和。
如果我

正确地理解,那么一个表(您需要与之比较)不在MS Access DB中。快速解决方案如下:将"Bluur"表导入 Access 数据库(最有可能使用 Access 导入数据向导)。现在,您可以使用简单的 JOIN 查询来再次测试数据库中的所有其他表。