8

xlsからデータをプルする必要があります。また、ユーザーがファイルの場所を変更できるようにする必要があります。したがって、OleDbConnectionは良いスタートのように見え、最初にマージされたセルまででした。

これは、マージされたセルを除くすべてのセルで機能します。

OleDbCommand cmd = new OleDbCommand();
cmd.Connection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data 
Source=F:\test.xls;Extended Properties=Excel 8.0;");
cmd.CommandText = "SELECT * FROM [Sheet$]";
cmd.Connection.Open();

これにより、マージされたセルにアクセスできるようになるはずです。

OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\test.xls;Extended Properties=Excel 8.0;HDR=Yes;IMEX=1;");

しかし、cmd.conn.open()でインストール可能なISAM例外が見つかりませんでした。

私はここのアドバイスに従いました: http ://support.microsoft.com/kb/209805

そしてここに: エラー:「インストール可能なISAMが見つかりませんでした」

運がない。

私はxlsからデータをプルする他の方法を受け入れています。または、コマンドがあったとしても、xlsで実行して、機能する可能性のあるmirgedセルを削除することができます。

4

4 に答える 4

14

複数ある場合は、拡張プロパティを引用符で囲む必要があるからだと思います。

OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\test.xls;
Extended Properties='Excel 8.0;HDR=Yes;IMEX=1';");

または、一重引用符が機能しない場合(あなたはアイデアを得る)

OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\test.xls;
Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1;"";");

あなたの例はそれを示していませんが、このエラーはファイルパスのスペースが原因である可能性もあります。この場合、ファイルパスも引用符で囲む必要があります。

OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=""F:\test.xls"";...
于 2009-03-13T19:58:10.347 に答える
2

システム要件にExcelのインストールが含まれていると仮定すると、Excelオブジェクトライブラリを使用できます。

Excel.Sheets sheets = m_Excel.Worksheets;
Excel.Worksheet worksheet = (Excel.Worksheet)sheets.get_Item(1);
Excel.Range range = worksheet.get_Range("A1", "E1".ToString());

VSTOも参照してください

于 2009-03-13T20:01:03.353 に答える
1

これを試して

私はこの問題を抱えていました。引用のためだけに

string sConnection = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sFilePath + ";" + "Extended Properties='Excel 8.0;HDR=YES;'";
于 2012-01-14T12:07:24.767 に答える
-1

SpreadsheetGear for .NETは、.NET用のロイヤリティフリーのスプレッドシートコンポーネントであり、Excel(または.NET 2.0以降)に依存することなく、32ビットおよび64ビットの.NETで必要なすべてのことを実行できます。

ライブASP.NETサンプルをここで確認し、自分で試してみたい場合は、ここから無料トライアルをダウンロードできます。

免責事項:私はSpreadsheetGearLLCを所有しています

于 2010-02-02T17:45:28.980 に答える