Манипулирование документами 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 'или одна из его зависимостей.
Спасибо за ваше время!
Ответы
Ответ 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();
}
}
}