我正在使用 Microsoft.Office.Interop,使用 C# 扫描 word 和 excel 文件,我将文件作为用户的输入,将其保存在本地目录中,然后扫描它的 Interop 库。它在我的本地发布上运行良好,但是当我在服务器上发布它时它不扫描 Word 或 Excel 文件。我的服务器上安装了 MS-Office,与我的 PC 上的版本相同。我还需要做什么?我已经在我的 bin 目录中复制了所需的 DLL。这就是我阅读word文件的方式
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 对象似乎为空。如果是 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 内创建了 Desktop 文件夹在这里,这两种解决方案都不适用于我:(只有在我发布它时才会出现问题