2013-08-26 3 views
0

Я использую Microsoft.Office.Interop, для сканирования слов и excel файлов с использованием C#, я беру файл в качестве ввода от пользователя, сохраняя его в локальном каталоге, а затем просматривая его в библиотеке Interop. Его работа отлично работает на моем локальном издании, но когда я опубликовал его на сервере, он не сканировал Word или Excel Files. У меня на моем сервере установлен MS-Office, та же версия, что и у меня на моем ПК. Что еще мне нужно сделать? Я скопировал требуемые DLL в моем каталоге bin. Это, как я читаю слово файлusing Microsoft.Office.Interop Word и Excel

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; 
} 

я получаю это исключение

Retrieving the COM class factory for component with CLSID {000209FF-0000-0000-C000-000000000046} failed due to the following error: 80070005 Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)).

Я установил его, следуя this post Однако теперь я имею вопрос с Excel и файлов слов. В случае файлов Word, не считывая файл из предыдущего кода, объект docs выглядит равным нулю. В случае Excel Its показывает исключение

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. 

Я прочитал решение, чтобы дать права на папку, а также создать папку Desktop внутри system32 Here, оба решения не работали для меня :( Этот вопрос, возникающие только тогда, когда я опубликовать его

+0

У вас возникли ошибки? Можем ли мы увидеть пример кода? – ganders

+0

Нет, я не получаю никакой ошибки –

+0

Ошибки? Исключения? Где? –

ответ

1

не следует использовать для автоматизации делопроизводства на сервере. только один поток может получить доступ к Слову, в то время, это очень медленно по сравнению с другими вариантами, и Слово не для выполнения на стороне сервера.

Много лучше использовать OpenXML SDK:

http://www.microsoft.com/en-us/download/details.aspx?id=5124

Или какой-нибудь другой оберточной:

http://docx.codeplex.com/

http://www.codeproject.com/Articles/87711/Manipulate-Docx-with-C-without-Microsoft-Word-inst

Если вы чувствуете, что вы абсолютно необходимо использовать для автоматизации делопроизводства на сервере (и не должны), то в по крайней мере, поместить его в отдельный процесс и запросить другие запросы к другому процессу. Таким образом, вы можете гарантировать, что обрабатывается только один запрос одновременно, вы можете безопасно предоставить другому процессу необходимые разрешения, а если Word остановится, вы можете убить его и вторичный процесс.

+0

См. Мой обновленный вопрос –

+0

@SyedSalmanRazaZaidi, я вижу ваши обновления, но я по-прежнему остаюсь за моей сильной рекомендацией, что никогда не следует использовать автоматизацию Office на сервере. Вместо этого используйте OpenXML SDK. –

Смежные вопросы