[英]How to get specific data from excel sheet into textboxes
我想使用搜索查詢將特定數據從Excel工作表獲取到winforms文本框中。 類似於“從[Sheet1]中搜索*,其中職員編號= 1234”
我嘗試了這段代碼,但是沒有用。 每當我說“連接未正確初始化”時,我都會收到一個異常。
try{
OleDbConnection con = new OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;data source=Test.xls;Extended Properties=Excel 8.0;");
con.Open();
OleDbCommand oleDbCommand = new OleDbCommand("SELECT * FROM [Sheet1] where Staff Number=1234");
OleDbDataReader oleDbDataReader = oleDbCommand.ExecuteReader();
TxtDateOfBirth.Text = oleDbDataReader.GetString(1);
TxtName.Text=oleDbDataReader.GetString(2);
.
.
.
.
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
這是一種簡單的表單,用戶可以在相關的文本框中輸入人員編號並獲取人員的詳細信息。 我的大多數搜索結果為我提供了將數據顯示到datagridview中的解決方案,但是我的問題有點不同,我知道我必須使用數據讀取器並執行它,但是不知道為什么會出現此問題。
任何指南將非常有幫助。
在我看來,您的代碼中存在一些問題:
1-您應該在連接中放置Excel文件的完整地址,而不是“ test.xls”。
2-命令中的“ Staff”和“ Number”之間有一個空格。 如果列名是“ StaffNumber”,則不應有任何空格。 我建議您先測試不帶where子句的命令。
稍微調整了代碼。
改進措施
更改了連接字符串,添加了HDR=Yes;
表示第一行包含列名, IMEX=1;
它告訴驅動程序始終以文本形式讀取“混合”(數字,日期,字符串等)數據列。 這些通常在與員工數據庫一起工作時很有用。
問題
添加了變量,以使其更整潔且具有xls db文件的完整路徑 。
如上述其他幫助用戶在注釋中所建議的那樣,在Sheet1
之后添加了一個$
,並且還用[]包裝了[Staff Number]
。
添加了oleDbDataReader.Read()
以讀取結果,因為上面的代碼中也缺少此內容。
下面的示例代碼對我有用。
try
{
var xlsDbPath= "C:\\Temp\\Test.xls"; //<-- Full name of path
var connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + xlsDbPath+ ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
var query = "SELECT * FROM [Sheet1$] WHERE [Staff Number] = 1234"; //<-- Add $ after Sheet1 and fix 'Staff Number'?
using (var con = new OleDbConnection(connStr))
{
con.Open();
using (var oleDbCommand = new OleDbCommand(query, con))
{
using (var oleDbDataReader = oleDbCommand.ExecuteReader())
{
while (oleDbDataReader.Read()) //Read through results
{
TxtDateOfBirth.Text = oleDbDataReader.GetString(1);
TxtName.Text = oleDbDataReader.GetString(2);
//... //Remember if value is not string you will get error
//... //so if not string use .GetValue(1).ToString();
}
}
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.