0

SSISを使用して、JetドライバーでOLE Con​​nectを使用してExcelを読み取るか、別の接続タイプの「Excel接続」を使用できます。

私が恐れていたように、どちらもマージセルを使用してファイルを読み取る際に問題が発生するようです。

「Excel接続」を使用した場合にSSISがExcelに接続するために何を使用しているか知りたいです。

VBA以外に、サーバー上のセル、数式、書式設定などをマージしたExcelファイルを読み取るために何を提案しますか?Excel2003を使用しています。

アップデート

XLSを読み取るために使用するコードは次のとおりです。

private static void GetExcelSheets(string filePath)
        {
            string connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR={1}'", filePath, "no");

            OleDbConnection excelConnection = new OleDbConnection(connectionString);
            OleDbCommand cmdExcel = new OleDbCommand();
            OleDbDataAdapter oda = new OleDbDataAdapter();
            cmdExcel.Connection = excelConnection;

            if (excelConnection.State == ConnectionState.Open)
            {
                excelConnection.Close();
            }
            excelConnection.Open();

            OleDbCommand oleDbCommand = new OleDbCommand();
            oleDbCommand.CommandType = System.Data.CommandType.Text;
            oleDbCommand.Connection = excelConnection;
            OleDbDataAdapter oleDbDataAdapter = new OleDbDataAdapter(oleDbCommand);

            DataTable dtExcelSheetName = excelConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
            string getExcelSheetName = dtExcelSheetName.Rows[5]["Table_Name"].ToString();
            oleDbCommand.CommandText = "SELECT * FROM [" + getExcelSheetName + "]";
            oleDbDataAdapter.SelectCommand = oleDbCommand;
            DataTable dtExcelRecords = new DataTable();
            oleDbDataAdapter.Fill(dtExcelRecords);

            excelConnection.Dispose();

        }

次のようなスプレッドシートを読んだとき:

ここに画像の説明を入力してください

次に、デバッガービジュアライザーを使用してデータセットを表示します。これが表示されます。丸で囲んだソーススプレッドシートのデータが、表示されているDataTableから欠落していることに注意してください。

ここに画像の説明を入力してください

Microsoft OLE DB Provider forJet4.0を使用したExcel接続についてのポイントについて。SSISには、2つの別個の接続オブジェクトがあります。1つ目はExcelConnectオブジェクトです。プロパティページは次のようになります。

ここに画像の説明を入力してください 2つ目は、JETドライバーを使用してExcelを指すOLE接続オブジェクトです。

ここに画像の説明を入力してください

ExcelConnectionオブジェクトは実際に4.0Jetドライバーを使用していますか、それは同じことを行うための簡単な方法ですか、それともこれらの接続タイプは何らかの方法で本当に異なりますか?

4

1 に答える 1

1

Microsoftによると:

Excel接続マネージャーは、Microsoft OLE DB Provider for Jet4.0とそれをサポートするExcelISAM(Indexed Sequential Access Method)ドライバーを使用して、Excelデータソースに接続し、データを読み書きします。

ソースMSDN


セルが結合されたExcelシートを適切にインポートする方法については、値を取得するために、変換で左端の列がマップされていることを確認する必要があります。結合されたセルのセットの左端にないセルはすべてになりますnull。SSISは通常、「マージされた」セルの概念がないデータベースソースで使用されるため、これは妥当な予想だと思います。

于 2012-09-19T13:46:16.167 に答える