C#でExcel 2003スプレッドシートを開きます。インストール可能なISAMが見つかりませんでした。例外
質問
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で実行して、動作する可能性のある誤ったセルを削除できました。
解決
複数ある場合は、拡張プロパティを引用符で囲む必要があるからだと思います
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"";...
他のヒント
システム要件に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());
etc。
も参照してください。これを試してください
この問題がありました。引用のためだけに
string sConnection = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sFilePath + ";" + "Extended Properties='Excel 8.0;HDR=YES;'";
SpreadsheetGear for .NET は、.NETのロイヤリティフリーのスプレッドシートコンポーネントであり、必要なことはすべて実行する必要があります。 Excel(または.NET 2.0+以外のもの)に依存しない32ビットおよび64ビットの.NET。
ASP.NETのライブサンプルをこちらで確認し、無料試用版をダウンロードできますこちらを試してみてください。
免責事項:SpreadsheetGear LLCを所有しています