0

私のExcelワークブックで

最初のシート タブには

Number Name Code    Subject
100    Mark ABC Mathematics
101    John XYZ Physics

The second sheet tab contains

Number Name Code    Subject
103    Mark DEF Chemistry
104    John GHI Biology

コード(一意になる)をパラメーターとして渡し、Excelワークブック全体を検索したい

名前と件名を取得します..

つまり、コード = 'ABC' の myexcelworkbook から名前、件名を選択します。

シート名、列数などを取得できますが、Excel ワークブック全体を検索して必要な値を取得することはできません

        const string fileName="C:\\FileName.xls";

        OleDbConnectionStringBuilder connectionStringBuilder = new OleDbConnectionStringBuilder();
        connectionStringBuilder.Provider = "Microsoft.ACE.OLEDB.12.0";
        connectionStringBuilder.DataSource = fileName;
        connectionStringBuilder.Add("Mode", "Read");

        const string extendedProperties = "Excel 12.0;IMEX=1;HDR=YES";
        connectionStringBuilder.Add("Extended Properties", extendedProperties);
        using (OleDbConnection objConn = new OleDbConnection(connectionStringBuilder.ConnectionString))
       {
            objConn.Open();

            Microsoft.Office.Interop.Excel.Application xlsApp = new Microsoft.Office.Interop.Excel.Application();
            Workbook wb = xlsApp.Workbooks.Open(fileName, 0, true, 5, "", "", true, XlPlatform.xlWindows, "\t", false, false, 0, true);

            Sheets sheets = wb.Worksheets;

            for (int i =1 ; i <= wb.Worksheets.Count; i++)
            {

                MessageBox.Show(wb.Sheets[i].Name.ToString()); - gives sheet names inside the workbook
            }

          Worksheet ws = (Worksheet)sheets.get_Item(1); - gives the elements of specified sheet tab
      }

  //To get elements inside a specific sheet of an excel workbook/get column names

        OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM [" + "Sheet1" + "$]", objConn); 

        OleDbDataAdapter objAdapter1 = new OleDbDataAdapter(); 

        objAdapter1.SelectCommand = objCmdSelect; 

        DataSet objDataset1 = new DataSet(); 

        objAdapter1.Fill(objDataset1);

        string columnNames = string.Empty;
        // For each DataTable, print the ColumnName. use dataset.Rows to iterate row data...
        foreach (System.Data.DataTable table in objDataset1.Tables)
        {
            foreach (DataColumn column in table.Columns)
            {
                if (columnNames.Length > 0)
                {
                    columnNames = columnNames + Environment.NewLine + column.ColumnName;
                }
                else
                {
                    columnNames = column.ColumnName;
                }

            }
        } 

Excelワークブック内の一意のデータを見つけて、それに基づいて必要な値を取得できるように、誰かがいくつかのアイデアを共有できますか? 前もって感謝します。

4

1 に答える 1