繁体   English   中英

将 Excel 电子表格导入 DataGridView 并完成搜索

[英]Importing Excel spreadsheet into DataGridView and completing search

我正在将旧的 VBA 应用程序转换为 VB.NET。 这个应用程序包含几个工具,我需要一些帮助来转换其中一个。

本质上,有一个 Excel 电子表格,其中包含客户的公司名称、型号、序列号、保修结束日期、计划结束日期、城市/国家、替代公司名称和评论等客户信息。

该工具有一个包含所有匹配列的列表视图控件,与 Excel 电子表格相同,还有一个文本框,用户可以在其中键入一些搜索条件,例如序列号或公司名称。 Excel 电子表格中的任何匹配结果都将与电子表格列中的数据一起放入列表视图中,并排序到列表视图控件的正确匹配列中。

当前的 VBA 工具可以轻松地将此数据导入表单,因为它(表单)可以轻松访问电子表格数据 - 然而; 就我而言,我的程序在 Excel 和 VBA 外部 - 如果不先导入数据,我就无法做到这一点。

所以我的问题是:

  1. 如何将 Excel 电子表格导入我的 VB.NET 表单以使用数据(此文件始终位于每台机器上的完全相同的目录中,因此不需要文件浏览对话框,只需存储 Excel 电子表格的目录即可)。

  2. 我如何制作它/什么是允许用户输入搜索条件并使用匹配结果填充列表视图的适当代码

  3. 当用户完成搜索并且列表视图中填充了 Excel 电子表格中的匹配数据时,如何将数据排序到字段中(将 Excel 中列中的数据排序到 VB.NET 列表视图中的列中,以便匹配Excel 中公司列的结果将进入名为“公司”的列表视图列)。

我附上了一个包含数据的 Excel 电子表格的例子。

https://drive.google.com/file/d/1SiFZQiz8gsHfKgGIJZmLfrbmfhQkot7B/view?usp=sharing] 1

这是列表视图的样子:

在此处输入图片说明

我们并没有真正回答如此大的问题; 这里有一个完整的应用程序,您正在寻求有关如何从头到尾编写全部代码的建议,其中包括大量设计工作(而不是实现)- 本身就是主观或基于意见的事情。 我会回答以便为您可以前进的方向提供一些指示,但您应该致力于将未来的问题保持在非常狭窄的范围内。

如何将 Excel 电子表格导入我的 VB.NET 表单以使用数据(此文件始终位于每台机器上的完全相同的目录中,因此不需要文件浏览对话框,只需存储 Excel 电子表格的目录即可)。

使用 OpenFileDialog 让用户选择文件或硬编码一些逻辑以在固定位置找到它。 在 connectionstrings.com 上查看连接字符串,您需要使 Access/JET 数据库驱动程序连接到文件(它可以读取 Excel 文件并将它们视为 DB)。 Carl Prothman 在这里有一个可用的代码块 - 它是 C#,但您可以使用在线转换器将其转换为 VB,或者只是阅读并理解“创建新数据表、创建新数据适配器、设置连接字符串和 SQL 字符串”的一般流程DataAdapter 到一些明智的,调用 DataAdapter.fill”并编写 VB

使用 SQL 查询( SELECT * FROM sheetname )读取文件,并使用 DataAdapter 用文件内容填充 DataTable

我如何制作它/什么是允许用户输入搜索条件并使用匹配结果填充列表视图的适当代码

在表单上提供一个文本框供用户输入。使用返回按钮或按键启动搜索。 为了执行搜索只需设置.Filter由DataTable的默认视图属性返回的DataView对象的属性。 您可以在数据列的 .Expression 属性的文档中找到有关 Filter 属性所需语法的更多信息 - 保留它听起来很奇怪,但稍后会有意义!

当用户完成搜索并且列表视图中填充了 Excel 电子表格中的匹配数据时,如何将数据排序到字段中(将 Excel 中列中的数据排序到 VB.NET 列表视图中的列中,以便匹配Excel 中公司列的结果将进入名为“公司”的列表视图列)。

“将数据排序到字段中”在我将要告诉您的上下文中并没有真正意义,作为短语的排序通常是指更改数据行的顺序而不是将数据分配到列中(这是我认为你的意思)

要让 DataTable 中的数据显示在 DataGridView 中,您唯一需要做的就是将 DGV 的 .DataSource 属性设置为等于 DataTable 实例。 DGV 实际上会绑定到 DefaultView,因此任何过滤器都会生效。 使用这行代码设置数据绑定后,DGV 将自动呈现表的内容

总而言之,我希望这个应用程序可以在大约 10 行代码中完成:

'make new DataTable, possibly as a class level variable for ease 

'event handler for read_file button click
'make new DataAdapter, with connection string pointing to the excel file and SQL string to select the data
'fill DataTable
'assign data source of DataGridView, to filled DataTable


'event handler for filter button click
'set .filter property of class level DataTable.DefaultView property

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM