この問題に遭遇したとき、最初に頭に浮かぶのは Baidu です。その結果、しばらく探してみましたが、残念ながら有用で効果的な解決策は見つかりませんでした。自分自身に頼る必要があるようです。
まず、手持ちのリソースを整理しました。1 つは HtmlAgilityPack で、これは特に Html テキストの解析に使用されます。もう 1 つは ASPOSE.Word です。
考えを整理しましょう。Word に Html を挿入する場合、Word と Html は両方とも Document 構造であることに疑いの余地はありません。この場合、HTML にノードを挿入する方法を適用するだけで済みます。
したがって、最初の解決策は、まず Word を Html に変換し、次に挿入する Html コードを指定された位置に挿入して、Word 形式の文書として保存します。
2 番目の方法は、Html を解析して有効なテキストを抽出し、Word を使用して段落を追加して Html から解析されたテキストを追加することです。
HtmlAgilityPack.HtmlDocument hd = new HtmlAgilityPack.HtmlDocument();
hd.LoadHtml(txtContent.Value);
hd.DocumentNode.Elements("p");
このようにしてリッチテキストフィールドを取得できますすべてのテキストメッセージ。ただし、この方法で取得したノードは ASPOSE クラスでは認識されません。
いじり続けて ASPOSE に戻りましょう。ヘルプ ドキュメントを見つけるには、Baidu で検索してください。
ドキュメント doc = new Document(Server.MapPath("~/tem_body.doc"));
DocumentBuilder docBuilder = new DocumentBuilder(doc);
docBuilder.InsertHtml(txtContent.Value);
doc. MapPath("~/") + "/TestWord121.doc");
保存したファイルを開くだけです。写真付きのものをもう一度試してみます。これも非常に優れており、写真は Word で正常に表示されます。このプラグインは確かに非常に強力であるようですが、今のところ私の問題は解決していません。あくまで挿入位置の問題です。現在、これは挿入されたヘッダーであり、本文の段落 0 にあります。
次のステップは、HTML テキストを指定された位置に挿入する方法を解決することです。考えた後、まず挿入する位置を知る必要があります。しばらくして、Dongdong を発見しました。 DocumentExplorer。Word 文書の Doc 構造を表示できます。
すぐに見つけました。開くと、Word 文書がはっきりとわかります。
このようにして、挿入したい位置がどこにあるかがわかります。最も簡単な方法は、テンプレートを設定し、挿入するロケーション ノードを見つけることです。
ドキュメント temdoc = new Document(Server.MapPath("~/tem.doc"));
ドキュメント doc = new Document();
DocumentBuilder docBuilder = new DocumentBuilder(doc);
docBuilder.InsertHtml(txtContent.Value) ;
docBuilder.ParagraphFormat.Alignment = PlazaAlignment.Left;
temdoc.AppendDocument(doc, ImportFormatMode.KeepSourceFormatting);
DocumentBuilder temdocBuilder = new DocumentBuilder(temdoc);
var temPar as = 1]。 body .paragraphs; }
temdocBuilder.Document.Sections.RemoveAt(1 );
temdoc.Save(Server.MapPath("~/") + "/TestWord1212.doc");
再度保存した後、テスト Word 文書を開きます。は期待に応え、Word ドキュメントの指定された場所に HTML テキストを挿入する問題を解決します。もう一度写真付きのものを試してみたところ、Word文書に写真があったのか調べてみると、以前は普通に写真を保存して表示できていたのですが、今は写真が表示されずバツ印だけが表示されているようです。画像パスに問題があります。
ドキュメント temdoc = new Document(Server.MapPath("~/tem.doc"));
ドキュメント doc = new Document(Server.MapPath("~/bank_tem.doc"));
DocumentBuilder docBuilder = new DocumentBuilder(doc );
docBuilder.InsertHtml(txtContent.Value);
docBuilder.ParagraphFormat.Alignment = PlazaAlignment.Left;
temdoc.AppendDocument(doc, ImportFormatMode.KeepSourceFormatting);
DocumentBuilder temdocBuil der = new DocumentBuilder(temdoc);
変数temParas = temdocBuilder.Document.Sections[1].Body.Paragraphs;
//int intIndexer = 0;
foreach (Paragraph para in temParas)
{
//ここではランダムな位置が指定されており、Paragraphs ノードの 6 番目の位置です
temdocBuilder.Document.Sections[0].Body.InsertAfter(para.Clone(true), temdocBuilder.Document.Sections[0].Body.Paragraphs[5 + intIndexer - 1].NextSibling);
intIndexer++;
}
temdocBuilder.Document.Sections.RemoveAt(1);
temdoc.Save(Server.MapPath("~/") + "/TestWord1212.doc");
もう一度開くと、今度は画像が表示されないという問題が発生します解決しました。
実はここ、帰ってきてから6時間近くかけて探索するのですが、いつも腑に落ちない気がするのですが、XMLのノード操作を振り返ってふと気づきました。例:
temdocBuilder.Document.Sections[0].Body.InsertAfter(para, temdocBuilder.Document.Sections[0].Body.Paragraphs[5 + intIndexer - 1]); コンパイル時にエラーは報告されません。方法はそうではありません それはうまくいきます、
要するに、これが困っている人々に役立つことを願っています。ご質問がございましたら、私に連絡してください。良い解決策があれば、教えてください。