Подтвердить что ты не робот

Манипулирование документами Word на сервере без установленного Office (ASP.NET)

Я работаю над кодом для создания системы MS Word для HTML. После googleing примерно полминуты я смог найти код, который делает именно то, что мне нужно. Теперь он работает автономно на сервере разработки ASP.NET, но он не будет работать, когда я загружу файлы на своем сервере.

Я прочитал пару сообщений, и проблема, кажется, в том, что на сервере нет MS Office, установленного на нем. Теперь, я не уверен, что он есть, я все еще получаю электронное письмо от хорошего хоста (хостинг) (но я предполагаю, что он не установлен), но мой вопрос...

Есть ли способ заставить его работать без установленного MS Office? Я использую Microsoft.Office.Interop.Word ver. 12./ASP 3.5/С# и ошибка, которую я получаю, это

Не удалось загрузить файл или сборку "Microsoft.Office.Interop.Word, Версия = 12.0.0.0, Культура = нейтральная, PublicKeyToken = 71e9bce111e9429c 'или одна из его зависимостей.

Спасибо за ваше время!

4b9b3361

Ответ 1

Библиотека Interop не является "рабочей" библиотекой сама по себе, она является только оболочкой для winword.exe для .NET-программ, поэтому использование этой библиотеки не имеет никакого смысла, если вы не устанавливаете и не используете Microsoft Word.

Вместо этого вам нужно будет найти библиотеку, которая позволяет манипулировать документами Word. Если вы можете ограничить документы в новом формате (docx), тогда это будет довольно простая задача, например. используя OOXML SDK (также предложенный Стилгаром). Но есть и библиотеки для старого формата.

Обновление:. Я должен признать, хотя я был убежден, что раньше искал и нашел некоторые библиотеки для старого формата документа, мне больше не удается их найти, возможно, потому, что списки результатов - избалованный "множеством предложений для docx. Чтобы быть ясным:

Если вы можете позволить себе придерживаться формата docx (2007 или новее), вы должны это сделать. Office Open XML - это (более или менее) открытый стандарт на основе ZIP и XML, и многие инструменты уже существуют и будут разработаны в будущем. Старый формат в настоящее время гораздо менее поддерживается.

Если вам нужно пойти и для старого формата, то Aspose (как было предложено Uwe) - единственная библиотека, которую я нашел.

Ответ 2

Я использую Aspose.Words, коммерческий пакет.

Ответ 3

Я думаю, что OOXML SDK может содержать что-то, но он будет работать только с docx, а не со старым документом.

Что касается старых форматов, мне также интересен дешевый и простой способ их поддержки без необходимости использования API автоматизации

Ответ 4

  • Вы должны лучше объяснить, какой результат вы хотите достичь.
  • НЕТ СПОСОБА, MS Office требует взаимодействия MS Word на сервере
  • В зависимости от ваших потребностей вы должны найти лучшую стороннюю библиотеку (я предлагаю OpenXml.WordprocessingDocument), но код должен быть перезаписан.

Ответ 5

вы можете использовать Code7248.word_reader.dll

ниже приведен пример кода о том, как использовать Code7248.word_reader.dll

добавьте ссылку на эту DLL в свой проект и скопируйте ниже код.

using System;
using System.Collections.Generic;
using System.Text;
//add extra namespaces
using Code7248.word_reader;


namespace testWordRead
{
    class Program
    {
        private void readFileContent(string path)
        {
            TextExtractor extractor = new TextExtractor(path);
            string text = extractor.ExtractText();
            Console.WriteLine(text);
        }
        static void Main(string[] args)
        {
            Program cs = new Program();
            string path = "D:\Test\testdoc1.docx";
            cs.readFileContent(path);
            Console.ReadLine();
        }
    }
}