2

Jet.Oledbを使用してExcelファイルをデータテーブルにインポートしようとしています。これが私のコードです:

            string sourceConstr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + HttpContext.Current.Server.MapPath("~/" + fileName) + "';Extended Properties='Excel 8.0;HDR=No;IMEX=1'";
            OleDbConnection con = new OleDbConnection(sourceConstr);
            OleDbCommand oleDbCmd = new OleDbCommand();
            con.Open();
            oleDbCmd.Connection = con;
            DataTable dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

            string firstExcelSheetName=dt.Rows[0][2].ToString();
            string query = "select * from [" + firstExcelSheetName + "]";
            OleDbDataAdapter data = new OleDbDataAdapter(query, con);
            data.TableMappings.Add("Table", "dtExcel");
            data.Fill(dtExcel);

Excelファイルでは、最初の行に列名があります。しかし、私のデータテーブルは列名として(f1、f2、f3、...)を取得し、Excelファイルの最初の行を最初の行として取得しています。したがって、最初の行にcolumnNameが含まれていることを伝えなければならないことが推測できます。しかし、どうすればそれを実現できますか?

4

2 に答える 2

5

connectionstrings.comから引用する:

「HDR=はい;」最初の行にデータではなく列名が含まれていることを示します。「HDR=いいえ;」反対を示しま​​す。

したがって、接続文字列を変更して設定してみることができますHDR=Yes

于 2013-02-10T09:56:20.593 に答える
1

以下に示すように、接続文字列、つまりあなたの場合はsourceConstrにわずかな変更があります。

HDR=Yes 

それ以外の

HDR=No

変更後は

string sourceConstr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + HttpContext.Current.Server.MapPath("~/" + fileName) + "';Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'";
于 2013-02-10T10:01:45.953 に答える