Word_html/css_WEB-ITnose の指定された位置にリッチ テキスト フィールド値 (HTML テキスト) を挿入します。

WBOY
リリース: 2016-06-24 11:33:17
オリジナル
1819 人が閲覧しました

この問題に遭遇したとき、最初に頭に浮かぶのは 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]); コンパイル時にエラーは報告されません。方法はそうではありません それはうまくいきます、

要するに、これが困っている人々に役立つことを願っています。ご質問がございましたら、私に連絡してください。良い解決策があれば、教えてください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート