1

私は c# で Windows アプリケーションを作成していますが、ある形式では、この方法で Excel ファイルを使用したいと考えています。

ユーザーが従業員 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;
    }

ありがとう、このコードを見つけました。これが私の問題を解決するかどうか教えてくれませんか? (これもいくつかの変更によって)

4

2 に答える 2

0

これを試して、

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
}
于 2013-07-17T07:23:09.327 に答える
0

このようなことを試してみてください。

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'";
于 2013-07-17T07:26:55.223 に答える