8

C#でOLEDB経由でExcelファイル(.xls)に書き込む方法を知っている人はいますか? 私は次のことをしています:

   OleDbCommand dbCmd = new OleDbCommand("CREATE TABLE [test$] (...)", connection);
   dbCmd.CommandTimeout = mTimeout;
   results = dbCmd.ExecuteNonQuery();

しかし、メッセージとともに OleDbException がスローされます。

「テーブル 'test$' のデザインを変更できません。読み取り専用データベースにあります。」

接続は問題ないようで、データを正常に選択できますが、Excel ファイルにデータを挿入できないようです。OLEDB 経由で Excel ファイルへの読み取り/書き込みアクセスを取得する方法を知っている人はいますか?

4

7 に答える 7

14

私も探して答えていましたが、Zorantulaのソリューションはうまくいきませんでした。http://www.cnblogs.com/zwwon/archive/2009/01/09/1372262.htmlで解決策を見つけました

ReadOnly=falseパラメータとIMEX=1拡張プロパティを削除しました。

このIMEX=1プロパティはワークブックをインポート モードで開くため、構造を変更するコマンド (CREATE TABLEや などDROP TABLE) は機能しません。

私の作業接続文字列は次のとおりです。

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=workbook.xls;Mode=ReadWrite;Extended Properties=\"Excel 8.0;HDR=Yes;\";"
于 2009-04-23T10:49:35.653 に答える
8

ReadOnly=False;接続文字列に追加する必要があります

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=fifa_ng_db.xls;Mode=ReadWrite;ReadOnly=false;Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";
于 2008-10-08T18:38:27.583 に答える
2

私も同じ問題を抱えていました。拡張プロパティのみを削除しますIMEX=1。それはあなたの問題を解決します。テーブルはExcelファイルに作成されます...

于 2011-08-04T20:16:02.627 に答える
1

いくつかの質問:

  • アプリを実行するユーザー (あなたですか?) には、ファイルへの書き込み権限がありますか?
  • ファイルは読み取り専用ですか?
  • 接続文字列は何ですか?

ASP を使用している場合は、この例のように IUSER_* ユーザーを追加する必要があります。

于 2008-09-12T02:04:24.797 に答える
0

マイケル・ハーレンの答えに加えて。このコードがASP.NETアプリケーション(IISアプリケーションプールで指定されている)で実行されている場合、XLSファイルに変更アクセス許可を付与する必要があるアカウントはおそらくNETWORKSERVICEになります。コードが実行されているアカウントを正確に確認するには、次の簡単な方法を実行します。

Response.Write(Environment.UserDomainName + "\\" + Environment.UserName);
于 2008-10-08T18:49:51.897 に答える
0

ASP.NET で実行していたところ、「デザインを変更できません...」と「ISAM が見つかりません...」という両方のエラー メッセージが表示されました。

次のことが必要であることがわかりました。

a ) 次の接続文字列を使用します。

Provider=Microsoft.Jet.OLEDB.4.0;Mode=ReadWrite;Extended Properties='Excel 8.0;HDR=Yes;';Data Source=" + {path to file};

IMEX=1私も接続文字列のReadOnly=false属性に問題があったことに注意してください。

b ) ファイルが書き込まれていたフォルダーへの完全なアクセス許可を全員に付与します。通常、ASP.NET は NETWORK SERVICE アカウントで実行され、既にアクセス許可を持っています。ただし、OleDb コードはアンマネージであるため、他のセキュリティ コンテキストで実行する必要があります。(私は現在、どのアカウントを把握するのが面倒なので、EVERYONE を使用しました。)

于 2009-06-10T16:11:17.943 に答える
0
  • アプリケーションの Excel ファイルへの書き込み権限を確認するにはどうすればよいですか (Excel 2007 を使用しています)。
  • ファイルは読み取り専用ではなく、(私の知る限り) 保護されていません。
  • 私の接続文字列は次のとおりです。

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=fifa_ng_db.xls;Mode=ReadWrite;Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\""

于 2008-09-12T16:12:37.907 に答える