web-dev-qa-db-ja.com

Officeがインストールされていないサーバー(ASP.NET)でWord文書を操作する

MS Word to HTMLシステムを作成するためのコードに取り組んでいます。約30分間グーグル検索した後、私は必要なものを正確に実行するコードを見つけることができました。さて、ASP.NET開発サーバーではオフラインで機能しますが、サーバーにファイルをアップロードしても機能しません。

いくつかの投稿を読みましたが、サーバーにMS Officeがインストールされていないため、問題があるようです。今、私はそれがそうであるかどうか確信がありません、私はホスティング@善人からのメールをまだ利用しています(しかし私はそれがインストールされていないと仮定します)が、私の質問は...

MS Officeをインストールせずに機能させる方法はありますか? Microsoft.Office.Interop.Word ver。を使用しています。 12./ASP 3.5/C#と私が得ているエラーは

ファイルまたはアセンブリ 'Microsoft.Office.Interop.Word、Version = 12.0.0.0、Culture = neutral、PublicKeyToken = 71e9bce111e9429c'またはその依存関係の1つを読み込めませんでした。

お時間をいただきありがとうございます!

20
Andrej

Interopライブラリ自体は「動作する」ライブラリではなく、.NETプログラムのwinword.exeのラッパーにすぎないため、Microsoft Wordをインストールまたは使用しない場合、このライブラリを使用しても意味がありません。

代わりに、Word文書を操作できるライブラリを見つける必要があります。ドキュメントを新しい形式(docx)に制限できる場合、それは非常に簡単なタスクです。 OOXML SDK を使用します(Stilgarによっても提案されています)。ただし、古い形式のライブラリもあります。

更新:私は認めなければなりませんが、以前に古いdoc形式のライブラリをいくつか検索して見つけたと確信していましたが、それらを見つけることができなくなりましたおそらく、docxの多くのオファーによって結果リストが「損なわれている」ためです。明確にするために:

Docx(2007以降)形式を使用する余裕がある場合は、それを行う必要があります。 Office Open XMLは、ZipとXMLに基づく(多かれ少なかれ)オープンな標準であり、多くのツールが既に存在しており、将来開発される予定です。古い形式は、現在サポートされていません。

古いフォーマットも使用する必要がある場合は、 Aspose (Uweの提案による)が私が見つけた唯一のライブラリです。

14
chiccodoro

私が使用しているのは、商用パッケージの Aspose.Words です。

3
Uwe Keim

OOXML SDKmayには何かが含まれていると思いますが、それはdocxでのみ機能し、古いドキュメントでは機能しません。

古い形式については、オートメーションAPIを使用せずに安価で簡単にサポートできる方法にも興味があります。

2
Stilgar
  1. あなたが達成したい結果が何であるかをよりよく説明する必要があります
  2. いいえ、MS Officeの相互運用にはMS Wordがサーバーにインストールされている必要があります
  3. 必要に応じて、最良のサードパーティライブラリを見つける必要があります( OpenXml.WordprocessingDocument をお勧めします)。ただし、コードを書き直す必要があります。
2
Emanuele Greco

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();
        }
    }
}
0
Sagar Modi