C#を使用してWordおよびExcelファイルをスキャンするためにMicrosoft.Office.Interopを使用しています。ユーザーからの入力としてファイルを取得し、ローカルディレクトリに保存してから相互運用ライブラリをスキャンしています。ローカル パブリッシュでは問題なく動作しますが、サーバー上でパブリッシュすると、Word または Excel ファイルがスキャンされません。私のサーバーには、私の PC と同じバージョンの MS-Office がインストールされています。他に何をする必要がありますか?必要な DLL を bin ディレクトリにコピーしました。これは私がワードファイルを読んでいる方法です
public static string word_to_text(string source)
{
Word.Application newApp = new Word.Application();
object Source = source;
object Unknown = Type.Missing;
object miss = System.Reflection.Missing.Value;
object readOnly = true;
Microsoft.Office.Interop.Word.Document docs = newApp.Documents.Open(ref Source, ref miss, ref readOnly, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss);
string totaltext = "";
for (int j = 0; j < docs.Paragraphs.Count; j++)
{
totaltext += " \r\n " + docs.Paragraphs[j + 1].Range.Text.ToString();
}
docs.Close();
newApp.Quit();
return totaltext;
}
私はこの例外を受けていました
次のエラーのため、CLSID {000209FF-0000-0000-C000-000000000046} を持つコンポーネントの COM クラス ファクトリを取得できませんでした: 80070005 アクセスが拒否されました。(HRESULT からの例外: 0x80070005 (E_ACCESSDENIED))。
この投稿に従って修正しましたが、 現在、Excel および Word ファイルに問題があります。Word ファイルの場合、上記のコードからファイルを読み取らず、docs オブジェクトが null のように見えます。Excelの場合その表示例外
Microsoft Office Excel cannot access the file 'myfile path'. There are several possible reasons: • The file name or path does not exist. • The file is being used by another program. • The workbook you are trying to save has the same name as a currently open workbook.
フォルダーに権限を付与するソリューションを読み、system32 内にデスクトップ フォルダーを作成します。