簡體   English   中英

在Excel文件C#中搜索文本

[英]search for text in excel file c#

我正在用c#編寫Windows應用程序,並且我想以一種形式使用Excel文件。

在表單中,當用戶在文本框中鍵入Employee ID時,我想搜索excel文件,並根據ID在其他一些文本框中顯示該雇員的其他信息(名稱文本框,姓氏文本框,狀態文本框和食物計數文本框)

請告訴我如何從中檢索信息。

public List <string>[] RetrieveColumnGeneral(Excel.Worksheet sheet,string FindWhat)
    {
        int columnCount = sheet.UsedRange.Columns.Count;
        List<string>[] columnValue = new List<string>[columnCount];
        Excel.Range rngResult = null;
        Excel.Range rng = null;

        int index = 0;
        int rowCount = sheet.UsedRange.Rows.Count;
        Excel.Range FindRange = null;
        for (int columnIndex = 1; columnIndex <= sheet.UsedRange.Columns.Count;columnIndex++ )
        {
            FindRange = sheet.UsedRange.Columns[columnIndex] as Excel.Range;
            FindRange.Select();
            rngResult = FindRange.Find(What: FindWhat, LookIn: Excel.XlFindLookIn.xlValues,
                LookAt: Excel.XlLookAt.xlPart, SearchOrder: Excel.XlSearchOrder.xlByRows);
            if (rngResult != null)
            {
                columnValue[index] = new List<string>();

                for (int rowIndex = 1; rowIndex <= sheet.UsedRange.Rows.Count;rowIndex++ )
                {
                    rng = sheet.UsedRange[rowIndex, columnIndex] as Excel.Range;
                    if (rng.Value != null)
                    {
                        columnValue[index].Add(rng.Value.ToString());
                    }
                }
                index++;
            }
        }    
        Array.Resize ( ref columnValue , index);
        return columnValue;
    }

謝謝,我找到了這段代碼。 您能告訴我這是否可以解決我的問題嗎(也可以通過一些修改)。

嘗試這個,

You have to passed Sheet object, but in below code SQL statement fire and get all records in DataSet object.   

string sql = "SELECT * FROM [" + selectedWorksheetName + "]";
var adapter = new OleDbDataAdapter(sql, excelObject.Connection);
adapter.Fill(activityDataSet, "Results");

if (activityDataSet.Tables[0] != null)
{
     //here you will check which data get based on your columns
}

嘗試這樣的事情。

var ds = new DataSet();
var adapter = new OleDbDataAdapter("SELECT * FROM [" + newSheetName + "]", ConnectionString);
adapter.Fill(ds, newSheetName);

然后使用上面的數據集過濾行。

DataRow dataRow = (from DataRow dr in ds.Tables[0].Rows where dr["Id"] == textbox.Text select dr).FirstOrDefault();

if(dataRow != null)
{
    // Fill values from this dataRow
}

編輯

// If excelsheet ends with .xls
string ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\ExcelData\QB Accounts.xls;Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'";

// If excelsheet ends with .xlsx
string ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\ExcelData\CSENG01.xlsx;Extended Properties='Excel 12.0;HDR=Yes;IMEX=1'";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM