35

Microsoft.Office.Interop.Excel.WorkbookClass.SaveAs()メソッドは、Windows server 2003 および XP でも正常に動作しますが、Windows server 2008 では動作しません。すべての Dll と権限が与えられているので、コピーしました

Culture 設定や DCOM 権限など、ネットで提供されているすべてのソリューションも試しました。

次のエラーを取得:

System.Runtime.InteropServices.COMException (0x800A03EC): HRESULT からの例外: 0x800A03EC

Microsoft.Office.Interop.Excel.WorkbookClass.SaveAs(オブジェクト ファイル名、オブジェクト FileFormat、オブジェクト パスワード、オブジェクト WriteResPassword、オブジェクト ReadOnlyRecommended、オブジェクト CreateBackup、XlSaveAsAccessMode AccessMode、オブジェクト ConflictResolution、オブジェクト AddToMru、オブジェクト TextCodepage、オブジェクト TextVisualLayout、オブジェクト ローカル)

助けてください ..!

4

9 に答える 9

55

答えが見つかりました.......!!!!!!!!

正式には、Microsoft Office 2003 Interop は、Microsoft によって Windows Server 2008 でサポートされていません。

しかし、コードと検索を使用して多くの順列と組み合わせを行った後、シナリオに適した 1 つのソリューションに出会いました。

解決策は、Windows 2003 と 2008 のフォルダー構造の維持方法の違いを埋めることです。これは、Office 相互運用機能がデスクトップ フォルダーに依存してファイルを開いたり保存したりするためです。2003 システムでは、2008 には存在しない systemprofile の下にデスクトップ フォルダが格納されています。

したがって、以下に示すように、2008 年にそれぞれの階層の下にこのフォルダーを作成すると、Office Interop は、必要に応じてファイルを保存できます。このデスクトップ フォルダは、次の場所に作成する必要があります。

C:\Windows\System32\config\systemprofile

C:\Windows\SysWOW64\config\systemprofile

これは私のために働いた...

また、.NET 1.1 がインストールされているかどうかも確認してください。これは、Interop で必要であり、Windows Server 2008 でプレインストールされているためです。

または、SaveCopyas() メソッドを使用することもできますが、ファイル名の文字列として引数を取るだけではありません)

みんなありがとう..!

于 2010-12-15T10:10:18.747 に答える
17

私のために働いたのでこれを試してください...

  1. [スタート] -> [ファイル名を指定して実行] に移動し、「dcomcnfg」と入力します。
  2. これにより、コンポーネント サービス ウィンドウが表示され、[コンソール ルート] -> [コンピューター] -> [DCOM 構成] が展開されます。
  3. コンポーネントのリストで「Microsoft Excel アプリケーション」を見つけます。
  4. エントリを右クリックし、「プロパティ」を選択します
  5. プロパティ ダイアログの [ID] タブに移動します。
  6. 「インタラクティブなユーザー」を選択します。

ここで言及されている最後の段落の厚意による

于 2015-07-18T20:10:50.117 に答える
5

グーグルで検索すると、ファイルが破損している可能性があることがわかります。

http://bitterolives.blogspot.com/2009/03/excel-interop-comexception-hresult.html

そして、CorruptLoadパラメーターを使用して、とにかくそれを開くようにExcelに指示できます...

Workbook workbook = excelApplicationObject.Workbooks.Open(path, CorruptLoad: true);
于 2010-12-15T10:06:11.677 に答える
2

Excelファイルを保存しようとすると、この同じエラーが表示されました。MS Office 2003 を使用していたときはコードは正常に機能していましたが、MS Office 2007 にアップグレードした後、この問題が発生するようになりました。Excelファイルをサーバーまたはリモートファイル共有に保存しようとすると、いつでも発生します。

私のソリューションは初歩的ですが、うまくいきました。ユーザーの C:\ ドライブのように、プログラムにファイルをローカルに保存させました。次に、「System.IO.File.Copy(File, Destination, Overwrite)」メソッドを使用して、ファイルをサーバーに移動します。その後、C:\ ドライブのファイルを削除できます。

うまく機能し、シンプルです。しかし、確かに最もエレガントなアプローチではありません。

お役に立てれば!このアイデアが頭に浮かぶまで、私はウェブ上で解決策を見つけるのに非常に苦労していました.

于 2012-01-26T07:38:59.207 に答える
1

これは、IIS が実行されているときのアクセス許可の問題です。この問題があり、この方法で解決しました

私はフォルダに行きました

C:\Windows\ System32\config\SystemProfile

C:\Windows\SysWOW64\config\SystemProfile

保護されたシステム フォルダであり、通常はロックされています。

右クリック -> カード セキュリティ -> 編集 -> 「Autenticadet ユーザー」を追加し、権限を割り当てます。

この時点ですべてが解決されました。まだ問題がある場合は、すべての権限を「Everyone」に付与してみてください。

于 2014-10-24T07:28:11.537 に答える
0

まだこの問題が発生しているすべての人のために、私は血まみれのことを追跡するのに2日間費やしました. データセットに行がない場合、同じエラーが発生していました。明らかなように見えますが、エラー メッセージは非常にわかりにくいため、2 日かかります。

于 2012-02-29T12:51:26.717 に答える