0

DateTime 形式の Call_Date 列を含む xls ファイルがあります。

このファイルを読み取って、接続文字列プロパティ HDR = No でデータテーブルに配置しようとしています。それを読み取るデータテーブルのヘッダー行が必要ありません。

私がデータテーブルで取得している最初の行は、最初の行に空の文字列を持つ call_date を除いて、xls の列の名前です。

日時として解析できない場合、OLEDBが日時形式として読み取ろうとし、 type = " System.DBNull " の空の文字列として配置しようとする可能性があることを理解できます。

しかし、他のようにデータテーブルの最初の行にこの call_date 列名を付ける必要があります。

xlsでフォーマットを変更できません。C# などで読みながらできますか。

これまでの私のコード

        mCon.ConnectionString = ("Provider=Microsoft.ACE.OLEDB.12.0;data source=" + openFileDialog1.FileName + ";Extended Properties=\"Excel 12.0;HDR=NO\";");
        strSelectQuery = "SELECT TOP 20 * FROM [Sheet1$]";
        if (mCon.State == ConnectionState.Closed)
        {
            mCon.Open();
        }
        DataAdapter = new System.Data.OleDb.OleDbDataAdapter(strSelectQuery, mCon);
        DataAdapter.Fill(mDTable);
        mCon.Close();
4

1 に答える 1

0

インターネットでこのトピックを検索するのに何時間も費やした後、私は自分で解決しました。

接続文字列を変更して、拡張プロパティに IMEX =1 を追加することで、OLEDB が 1 つの列に複数のデータ型エントリを含む Excel ファイルを読み取れるようにしました。

私の接続文字列は次のようになります

mCon.ConnectionString = ("Provider=Microsoft.ACE.OLEDB.12.0;data source=" + openFileDialog1.FileName + ";Extended Properties=\"Excel 12.0;HDR=NO;IMEX = 1\";");
于 2013-03-28T09:28:52.877 に答える