亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從Excel工作表中獲取特定數據到文本框中

如何從Excel工作表中獲取特定數據到文本框中

C#
一只斗牛犬 2022-11-21 16:02:45
我想使用搜索查詢將特定數據從 Excel 工作表獲取到 winforms TextBoxes 中。像這樣的“從 [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());           }這是一個簡單的表單,用戶將在其中輸入員工編號并在相關文本框中獲取此人的詳細信息。大多數“我的搜索”結果為我提供了將數據顯示到數據網格視圖中的解決方案,但我的問題有點不同,我知道我必須使用數據讀取器并執行它,但不知道為什么會出現這個問題。
查看完整描述

2 回答

?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

稍微調整一下你的代碼..


改進


更改了您的連接字符串,添加HDR=Yes;了指示第一行包含列名并且IMEX=1;告訴驅動程序始終將“混合”(數字、日期、字符串等)數據列作為文本讀取的內容。在使用員工數據庫時,這些通常很有幫助。


問題


添加了變量以使其更清晰和完整的 xls 數據庫文件路徑。


按照上面其他幫助用戶的評論中的建議,添加了一個$afterSheet1并用 [] 包裝。[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());

}


查看完整回答
反對 回復 2022-11-21
?
拉風的咖菲貓

TA貢獻1995條經驗 獲得超2個贊

在我看來,您的代碼中存在一些問題:

1- 您應該將 Excel 文件的完整地址放在您的連接中,而不是“test.xls”。

2- 您的命令中“Staff”和“Number”之間有一個空格。如果列名是“StaffNumber”,則不應有任何空格。我建議您先測試不帶 where 子句的命令。


查看完整回答
反對 回復 2022-11-21
  • 2 回答
  • 0 關注
  • 154 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號