@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

OLEDBでExcelを読み込めない

1
投稿者投稿内容
borjarno
会議室デビュー日: 2008/03/27
投稿数: 4
投稿日時: 2008-03-27 10:47
ExcelファイルをOLEDBを使って、ASPのGridViewに表示しようとしているのですが、
どうやってもOLEDBのコネクションがOPENにならず、
「OleDbExceptionはユーザーコードによってハンドルされませんでした」
と表示されてしまい、途中で止まります。

環境の設定が悪いのか、ソースに問題があるのかよく分からないですが、
何卒、ご教授お願い致します。


** エラーメッセージ
「OleDbExceptionはユーザーコードによってハンドルされませんでした。」


** ソース
string sConnectionString =
"provider=Microsoft.Jet.OLEDB.4.0;" +
"data source=C:\\ExcelData.xls;" +
"Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"";
OleDbConnection objConn = new OleDbConnection(sConnectionString);

objConn.Open(); // この箇所でとまります。

OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM myRange1", objConn);
OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();
objAdapter1.SelectCommand = objCmdSelect;

DataSet objDataset1 = new DataSet();
objAdapter1.Fill(objDataset1, "Sheet1");

GridView1.DataSource = objDataset1.Tables[0].DefaultView;
GridView1.DataBind();
objConn.Close();


** 環境
IDE: Visual Studio Web Developer 2005 Express Edition
Web: Web Developerに内蔵されているWeb Server (IISは入れていません)

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-03-27 12:44
接続文字列自体の形式は間違いないと思いますが、

引用:

borjarnoさんの書き込み (2008-03-27 10:47) より:

"data source=C:\ExcelData.xls;"


こちらにアクセスする権限は大丈夫でしょうか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
borjarno
会議室デビュー日: 2008/03/27
投稿数: 4
投稿日時: 2008-03-27 13:05
見て頂きありがとうございます。

Excelファイルの権限については、ファイル単位で
"ASPNET", "Everyone"共に「フルコントロール」を許可させておりますので
権限は大丈夫かと思います。
borjarno
会議室デビュー日: 2008/03/27
投稿数: 4
投稿日時: 2008-03-27 15:09
追記です。
スタックトレースは下記の通り出力されます。


[OleDbException (0x800401f9): エラー メッセージはありません。結果コードは -2147220999(0x800401F9) です。]
System.Data.OleDb.OleDbServicesWrapper.GetDataSource(OleDbConnectionString constr, DataSourceWrapper& datasrcWrapper) +276
System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection) +145
System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) +124
System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup) +91
System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +115
System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +122
System.Data.OleDb.OleDbConnection.Open() +49
_Default.Button1_Click(Object sender, EventArgs e) in c:\Documents and Settings\**********\My Documents\Visual Studio 2005\WebSites\test\ExcelCSTest\Default.aspx.cs:59
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +96
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +117
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +31
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +32
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +72
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3825


かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2008-03-27 15:43
「oledb -2147220999」でGoogleさまにお伺いを立てたところ、

ADO connection Open failure(pcreview.co.uk)
ファイルへのアクセス権限がないため <- フルアクセスのため問題なし?

ADO to connect to Excel Worksheet - ERROR(eggheadcafe.com)
MDACが壊れているため
-> How to Repair MDAC 2.8 Under Windows XP with SP2 Installed(www.macropool.com)に従ってMDACを修復してみたら?とのフォロー有り

とりあえず、こんなところが目に付きました。
borjarno
会議室デビュー日: 2008/03/27
投稿数: 4
投稿日時: 2008-03-27 16:30
かずくんさん

MDACの修復を試したところ、正常に読み込めました!!
あぁ、これでやっと業務に移れます・・・
修復方法までフォローして下さり、大変助かりました。
ありがとうございましたっ!!
1

スキルアップ/キャリアアップ(JOB@IT)