Word 文書を編集する際には、特定の段落を削除する理由がたくさんあります。例えば、ドキュメントを再構成するために単純に削除する場合や、誤った情報や関連のない情報を削除して文書の正確性を確保する場合などが考えられます。この記事では、Spire.Doc for C++ を使用して C++ で Word 文書で段落を削除する方法について説明します。 Word 文書ですべての段落を削除する Word 文書で特定の段落を削除する Word 文書で空白の段落を削除する Spire.Doc for C++ をインストールします Spire.Doc for C++ をアプリケーションに組み込むには、2つの方法があります。一つは NuGet 経由でインストールする方法、もう一つは当社のウェブサイトからパッケージをダウンロードし、ライブラリをプログラムにコピーする方法です。NuGet 経由のインストールの方が便利で、より推奨されます。詳しくは、以下のリンクからご覧いただけます。 Spire.Doc for C++ を C++ アプリケーションに統合する方法 Word 文書ですべての段落を削除する すべての段落を削除するには、文書内のすべてのセクションをループします。そして、Section->GetParagraphs()->Clear()メソッドを使用して各セクションのすべての段落を削除できます。詳細な手順は次のとおりです。 Document インスタンスを作成します。 Document->LoadFromFile() メソッドを使用して Word 文書をロードします。 文書の各セクションをループし、Section->GetParagraphs()->Clear() メソッドを使用してセクション内のすべての段落を削除します。 Document->SaveToFile() メソッドを使用して結果文書を保存します。 C++ #include "Spire.Doc.o.h" using namespace Spire::Doc; int main() { //入出力ファイルパスを指定する std::wstring inputFile = L"Datasample.docx"; std::wstring outputFile = L"OutputRemoveAllParagraphs.docx"; //Documentインスタンスを作成する Document* document = new Document(); //Word文書をディスクからロードする document->LoadFromFile(inputFile.c_str()); //文書の各セクションの段落を削除する for (int i = 0; i < document->GetSections()->GetCount(); i++) { Section* section = document->GetSections()->GetItem(i); section->GetParagraphs()->Clear(); } //結果文書を保存する document->SaveToFile(outputFile.c_str(), FileFormat::Docx2013); document->Close(); delete document; } Word 文書で特定の段落を削除する 重複または役に立たない情報が含まれている段落を見つけた場合、Spire.Doc for C++ では、Section->GetParagraphs()->RemoveAt() メソッドを使用して、指定された段落を削除することができます。以下は詳細な手順です。 Document インスタンスを作成します。 Document->LoadFromFile() メソッドを使用して Word 文書をロードします。 Document->GetSections()->GetItem() メソッドを使用して、文書の指定されたセクションを取得します。 Section->GetParagraphs()->RemoveAt() メソッドを使用して、セクション内の指定された段落を削除します。 Document->SaveToFile() メソッドを使用して結果文書を保存します。 C++ #include "Spire.Doc.o.h" using namespace Spire::Doc; int main() { //入出力ファイルパスを指定する std::wstring inputFile = L"Datasample.docx"; std::wstring outputFile = L"OutputRemoveSpecificParagraph.docx"; //Documentインスタンスを作成する Document* document = new Document(); //Word文書をディスクからロードする document->LoadFromFile(inputFile.c_str()); //最初のセクションを取得する Section* sec = document->GetSections()->GetItem(0); //セクションの3番目の段落を削除する sec->GetParagraphs()->RemoveAt(2); //結果文書を保存する document->SaveToFile(outputFile.c_str(), FileFormat::Docx2013); document->Close(); delete document; } Word 文書で空白の段落を削除する 文書に空の段落/行がたくさんある場合は、読みやすくするためにそれらを削除する必要があります。以下は、Word 文書内のすべての空白の段落/行を削除する手順です。 Document インスタンスを作成します。 Document->LoadFromFile() メソッドを使用して Word 文書をロードします。 文書内のすべての段落をループし、その段落が空白段落であるかどうかを判断します。 section->GetBody()->GetChildObjects()->Remove() メソッドを使用して、文書から空白の段落を削除します。 Document->SaveToFile() メソッドを使用して結果文書を保存します C++ #include "Spire.Doc.o.h" using namespace Spire::Doc; int main() { //入出力ファイルパスを指定する std::wstring inputFile = L"Datasample.docx"; std::wstring outputFile = L"OutputRemoveEmptyLines.docx"; //Documentインスタンスを作成する Document* document = new Document(); //Word文書をディスクからロードする document->LoadFromFile(inputFile.c_str()); //Word文書内の各段落をループする for (int i = 0; i < document->GetSections()->GetCount(); i++) { Section* section = document->GetSections()->GetItem(i); for (int j = 0; j < section->GetBody()->GetChildObjects()->GetCount(); j++) { DocumentObject* secChildObject = section->GetBody()->GetChildObjects()->GetItem(j); if (secChildObject->GetDocumentObjectType() == DocumentObjectType::Paragraph) { Paragraph* para = dynamic_cast<Paragraph*>(secChildObject); std::wstring paraText = para->GetText(); //段落が空白段落かどうかを判断する if (paraText.empty()) { //空白段落を削除する section->GetBody()->GetChildObjects()->Remove(secChildObject); j--; } } } } //結果文書を保存する document->SaveToFile(outputFile.c_str(), FileFormat::Docx2013); document->Close(); delete document; } 一時ライセンスを申請する 結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 にお問い合わせ、30 日間有効な一時ライセンスを取得してください。