簡體   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