チュートリアル
簡単にライブラリーを使用するためのチュートリアルコレクション
脚注は、ページの下部に配置される注釈です。MS Word では、脚注を使用して参考文献を引用したり、説明を追加したり、コメントを残したりすることができますが、メインテキストには影響を与えません。この記事では、Spire.Doc for .NET を使用して、C# で Word ドキュメントに脚注を挿入または削除する方法を説明します。
まず、Spire.Doc for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。
PM> Install-Package Spire.Doc
Spire.Doc for .NET の Paragraph.AppendFootnote(FootnoteType.Footnote) メソッドを使用すると、指定した段落の後に脚注を挿入できます。詳細な手順は以下の通りです。
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System.Drawing;
namespace AddFootnote
{
class Program
{
static void Main(string[] args)
{
// Documentインスタンスを作成
Document document = new Document();
// サンプルのWordドキュメントをロード
document.LoadFromFile("Sample.docx");
// 最初のセクションを取得
Section section = document.Sections[0];
// セクション内の指定した段落を取得
Paragraph paragraph = section.Paragraphs[6];
// 段落の末尾に脚注を追加
Footnote footnote = paragraph.AppendFootnote(FootnoteType.Footnote);
// 脚注のテキスト内容を設定
TextRange text = footnote.TextBody.AddParagraph().AppendText("さらに、近代に入ると、デジタル通貨や仮想通貨の登場により、通貨の形態は大きく変化し、グローバルな取引のスピードと範囲が拡大した。");
// テキストのフォントと色を設定
text.CharacterFormat.FontName = "Yu Gothic UI";
text.CharacterFormat.FontSize = 12;
text.CharacterFormat.TextColor = Color.DarkBlue;
// 脚注上付き番号のフォーマットを設定
footnote.MarkerCharacterFormat.FontName = "Arial";
footnote.MarkerCharacterFormat.FontSize = 15;
footnote.MarkerCharacterFormat.Bold = true;
footnote.MarkerCharacterFormat.TextColor = Color.DarkCyan;
// 結果のドキュメントを保存
document.SaveToFile("output/段落に脚注を追加.docx", FileFormat.Docx);
document.Close();
}
}
}
Spire.Doc for .NET を使用すると、ドキュメント内の任意の場所にある特定のテキストの後に脚注を挿入することもできます。詳細な手順は以下の通りです。
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System.Drawing;
namespace InsertFootnote
{
class Program
{
static void Main(string[] args)
{
// Documentインスタンスを作成
Document document = new Document();
// サンプルのWordドキュメントをロード
document.LoadFromFile("Sample.docx");
// 指定したテキスト文字列を検索
TextSelection selection = document.FindString("通貨制度", false, true);
// 指定したテキストの範囲を取得
TextRange textRange = selection.GetAsOneRange();
// テキスト範囲がある段落を取得
Paragraph paragraph = textRange.OwnerParagraph;
// 段落内のテキスト範囲の位置インデックスを取得
int index = paragraph.ChildObjects.IndexOf(textRange);
// 脚注を追加
Footnote footnote = paragraph.AppendFootnote(FootnoteType.Footnote);
// 指定した段落の後に脚注を挿入
paragraph.ChildObjects.Insert(index + 1, footnote);
// 脚注のテキスト内容を設定
TextRange text = footnote.TextBody.AddParagraph().AppendText("通貨制度は、国や地域が採用する通貨の管理と流通に関する枠組みであり、これには中央銀行や政府の金融政策が含まれ、経済の安定と成長を支える役割を果たします。");
// テキストのフォントと色を設定
text.CharacterFormat.FontName = "Yu Gothic UI";
text.CharacterFormat.FontSize = 12;
text.CharacterFormat.TextColor = Color.DarkBlue;
// 脚注上付き番号のフォーマットを設定
footnote.MarkerCharacterFormat.FontName = "Arial";
footnote.MarkerCharacterFormat.FontSize = 15;
footnote.MarkerCharacterFormat.Bold = true;
footnote.MarkerCharacterFormat.TextColor = Color.DarkGreen;
// 結果のドキュメントを保存
document.SaveToFile("output/テキストに脚注を追加.docx", FileFormat.Docx);
document.Close();
}
}
}
既存の脚注を手動で検索して削除するのは時間と労力がかかります。以下の手順で、すべての脚注を一度にプログラムで削除することができます。
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
namespace RemoveFootnote
{
class Program
{
static void Main(string[] args)
{
// Documentインスタンスを作成
Document document = new Document();
// サンプルのWordドキュメントをロード
document.LoadFromFile("output/テキストに脚注を追加.docx");
// 最初のセクションを取得
Section section = document.Sections[0];
// セクション内の各段落を巡回して脚注を探す
foreach (Paragraph para in section.Paragraphs)
{
int index = -1;
for (int i = 0, cnt = para.ChildObjects.Count; i < cnt; i++)
{
ParagraphBase pBase = para.ChildObjects[i] as ParagraphBase;
if (pBase is Footnote)
{
index = i;
break;
}
}
if (index > -1)
// 脚注を削除
para.ChildObjects.RemoveAt(index);
}
// 結果のドキュメントを保存
document.SaveToFile("output/脚注を削除.docx", FileFormat.Docx);
document.Close();
}
}
}
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。
Word 文書のコメント機能は、文書の内容を変更したり中断させたりせずに、他の人が自分の意見や見解を追加するのに最適な方法を提供します。誰かが文書にコメントを付けると、文書の作成者や他のユーザーがそのコメントに返信し、文書を同時に閲覧していなくても、コメントを通じて議論を行うことができます。この記事では、Spire.Doc for .NET を使用して C# で Word 文書にコメントを追加、返信、または削除する方法を説明します。
まず、Spire.Doc for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。
PM> Install-Package Spire.Doc
Spire.Doc for .NET では、Paragraph.AppendComment() メソッドを使用して特定の段落にコメントを追加できます。以下はその手順です:
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
namespace AddComments
{
internal class Program
{
static void Main(string[] args)
{
// Documentクラスのインスタンスを初期化する
Document document = new Document();
// Wordドキュメントを読み込む
document.LoadFromFile("Sample.docx");
// ドキュメント内の最初のセクションを取得する
Section section = document.Sections[0];
// セクション内の最初の段落を取得する
Paragraph paragraph = section.Paragraphs[4];
// 段落にコメントを追加する
Comment comment = paragraph.AppendComment("LEDスクリーン技術の詳細については、この段落で説明する必要がある。");
// コメントの作成者を設定する
comment.Format.Author = "Janny";
comment.Format.Initial = "J";
// 結果のドキュメントを保存する
document.SaveToFile("output/段落にコメントを追加.docx");
document.Close();
}
}
}
Paragraph.AppendComment() メソッドは段落全体にコメントを追加するためのものです。デフォルトでは、コメントマークは段落の末尾に配置されます。特定のテキストにコメントを追加するには、Document.FindString() メソッドを使用してテキストを検索し、そのテキストの先頭と末尾にコメントマークを配置する必要があります。以下はその手順です:
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
namespace AddCommentsToText
{
internal class Program
{
static void Main(string[] args)
{
// Documentクラスのインスタンスを初期化する
Document document = new Document();
// Wordドキュメントを読み込む
document.LoadFromFile("Sample.docx");
// 特定の文字列を検索する
TextSelection find = document.FindString("紙幣", false, true);
// コメント開始マークとコメント終了マークを作成する
CommentMark commentmarkStart = new CommentMark(document);
commentmarkStart.Type = CommentMarkType.CommentStart;
CommentMark commentmarkEnd = new CommentMark(document);
commentmarkEnd.Type = CommentMarkType.CommentEnd;
// コメントを作成し、その内容と作成者を設定する
Comment comment = new Comment(document);
comment.Body.AddParagraph().Text = "紙幣がいつどこで発明されたのか、詳細を知りたい。";
comment.Format.Author = "Sam";
// 見つかった文字列を単一のテキスト範囲として取得する
TextRange range = find.GetAsOneRange();
// テキスト範囲の所有者段落を取得する
Paragraph para = range.OwnerParagraph;
// 段落にコメントを追加する
para.ChildObjects.Add(comment);
// 段落内のテキスト範囲のインデックスを取得する
int index = para.ChildObjects.IndexOf(range);
// コメントマーク開始とコメントマーク終了にコメントIDを設定する
commentmarkStart.CommentId = comment.Format.CommentId;
commentmarkEnd.CommentId = comment.Format.CommentId;
// テキスト範囲の前にコメント開始マークを挿入する
para.ChildObjects.Insert(index, commentmarkStart);
// テキスト範囲の後にコメント終了マークを挿入する
para.ChildObjects.Insert(index + 2, commentmarkEnd);
// 結果のドキュメントを保存する
document.SaveToFile("output/テキストにコメントを追加.docx");
document.Close();
}
}
}
既存のコメントに返信を追加するには、Comment.ReplyToComment() メソッドを使用します。以下はその手順です:
using Spire.Doc;
using Spire.Doc.Fields;
namespace ReplyToComments
{
internal class Program
{
static void Main(string[] args)
{
// Documentクラスのインスタンスを初期化する
Document document = new Document();
// Wordドキュメントを読み込む
document.LoadFromFile("output/テキストにコメントを追加.docx");
// ドキュメント内の最初のコメントを取得する
Comment comment1 = document.Comments[0];
// 新しいコメントを作成し、その作成者と内容を指定する
Comment replyComment1 = new Comment(document);
replyComment1.Format.Author = "Jack";
replyComment1.Body.AddParagraph().AppendText("次のバージョンで追加する予定だ。");
// 最初のコメントへの返信としてコメントを追加する
comment1.ReplyToComment(replyComment1);
// 結果のドキュメントを保存する
document.SaveToFile("output/コメントへの返信.docx", FileFormat.Docx2013);
document.Close();
}
}
}
Spire.Doc for .NET では、Document.Comments.RemoveAt(int) メソッドを使用して特定のコメントを削除したり、Document.Comments.Clear() メソッドを使用してすべてのコメントを削除したりすることができます。以下はその手順です:
using Spire.Doc;
namespace DeleteComments
{
internal class Program
{
static void Main(string[] args)
{
// Documentクラスのインスタンスを初期化する
Document document = new Document();
// Wordドキュメントを読み込む
document.LoadFromFile("output/コメントへの返信.docx");
// ドキュメント内の最初のコメントを削除する
//document.Comments.RemoveAt(0);
// ドキュメント内のすべてのコメントを削除する
document.Comments.Clear();
// 結果のドキュメントを保存する
document.SaveToFile("output/コメントを削除.docx", FileFormat.Docx2013);
document.Close();
}
}
}
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。
差し込み印刷は、Word ドキュメントの強力な機能で、単一のテンプレートドキュメントとデータソースから手紙、ラベル、封筒、さらには電子メールなどの複数のドキュメントを作成できます。これにより、各手紙を個別に書くことなく、多くの受信者にパーソナライズされた対応を送信することができます。
この記事では、Spire.Doc for .NET を使用して Word ドキュメントで差し込み印刷を実行する方法について説明します。
まず、Spire.Doc for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。
PM> Install-Package Spire.Doc
差し込みフィールドを含むテンプレート Word ドキュメントを生成するには、Microsoft Word などの Word エディターを使用することをお勧めします。Word エディターのビジュアルインターフェイスを使用すると、テンプレートの独自のレイアウト、書式設定、その他の要素をインタラクティブにデザインできます。
以下のスクリーンショットは、MS Word を使用して Word ドキュメントに差し込みフィールドを追加する方法を示しています。画像を差し込みフィールドに挿入したい場合は、「Image:FieldName」形式を使用してください。
C# コードを使用してテンプレート Word ドキュメントを作成する場合、次の手順に従います。
using Spire.Doc;
using Spire.Doc.Documents;
namespace MailMerge
{
class Program
{
static void Main(string[] args)
{
// Create an instance of Document class
Document doc = new Document();
// Add a section to the document
Section section = doc.AddSection();
// Add a paragraph to the section
Paragraph para = section.AddParagraph();
// Set the format
section.PageSetup.Margins.All = 80;
ParagraphStyle style = new ParagraphStyle(doc);
style.Name = "Default Style";
style.CharacterFormat.FontName = "Yu Gothic UI";
style.CharacterFormat.FontSize = 12;
doc.Styles.Add(style);
para.ApplyStyle(style.Name);
// Add text and mail merge fields to the paragraph
para.AppendText("氏名:");
para.AppendField("Name", FieldType.FieldMergeField);
para.AppendBreak(BreakType.LineBreak);
para.AppendText("メールアドレス:");
para.AppendField("Email", FieldType.FieldMergeField);
para.AppendBreak(BreakType.LineBreak);
para.AppendText("アバター:");
para.AppendField("Image:Avatar", FieldType.FieldMergeField);
// Save the document
doc.SaveToFile("Example.docx", FileFormat.Docx2019);
doc.Close();
}
}
}
Spire.Doc は、Word ドキュメントで指定された差し込み印刷操作を実行するための MailMerge.Execute() メソッドを提供します。このメソッドは6つのオーバーロードがあり、DataTable、DataView、および文字列配列など、さまざまなデータソースから差し込み印刷を実行できます。
配列で提供されたデータを使用して差し込み印刷を実行する手順は次のとおりです。
using Spire.Doc;
using Spire.Doc.Reporting;
using System.Drawing;
namespace MailMergeInDocument
{
class Program
{
static void Main(string[] args)
{
// Create a Document object
Document document = new Document();
// Load the template Word document
document.LoadFromFile("Example.docx");
// Specify field names
String[] fieldNames = {
"Name",
"Email",
"Avatar"
};
// Specify values that'll be used to fill the fields
String[] fieldValues = {
"山田 太郎",
"yamadatarou @email.com",
"yamadatarou.png"
};
// Register an event which occurs when merging the image filed
document.MailMerge.MergeImageField += new MergeImageFieldEventHandler(MailMerge_MergeImageField);
// Mail merge data to the document
document.MailMerge.Execute(fieldNames, fieldValues);
// Save the document
document.SaveToFile("差し込み印刷.docx", FileFormat.Docx2019);
// Dispose resources
document.Dispose();
}
// Fill an image field with a picture
private static void MailMerge_MergeImageField(object sender, MergeImageFieldEventArgs field)
{
string filePath = field.FieldValue as string;
if (!string.IsNullOrEmpty(filePath))
{
field.Image = Image.FromFile(filePath);
}
}
}
}
領域とは、データソースからのデータを挿入するドキュメント内の特定のエリアを指します。差し込み印刷は、データソース内の各レコードに対してその領域を繰り返します。Spire.Doc は、MailMerge.ExecuteWidthRegion() メソッドを提供し、領域を指定した差し込み印刷を実行します。
DataTable によって提供されたデータを使用して領域を指定した差し込み印刷を実行する手順は次のとおりです。
using Spire.Doc;
using System.Data;
namespace MailMergeWithGroup
{
class Program
{
static void Main(string[] args)
{
// Document オブジェクトを作成する
Document document = new Document();
// テンプレートのWord文書を読み込む
document.LoadFromFile("Sample.docx");
// テーブル名を指定してデータテーブルを作成する
DataTable table = new DataTable("会員");
// テーブルにサンプルデータを追加する
table.Columns.Add("名前");
table.Columns.Add("登録日");
table.Columns.Add("市");
table.Rows.Add("佐藤 一郎", "2024-01-15", "東京");
table.Rows.Add("鈴木 次郎", "2024-02-20", "大阪");
table.Rows.Add("高橋 三郎", "2024-03-10", "名古屋");
table.Rows.Add("田中 四郎", "2024-04-05", "札幌");
table.Rows.Add("渡辺 五郎", "2024-05-01", "福岡");
// 領域内でメールマージを実行する
document.MailMerge.ExecuteWidthRegion(table);
// 文書を保存する
document.SaveToFile("output/地域との差し込み印刷.docx", FileFormat.Docx2019);
// リソースを破棄する
document.Dispose();
}
}
}
入れ子のグループの差し込み印刷は、入れ子の領域内の差し込みフィールドを、階層構造で整理されたデータで置換することによって機能します。入れ子の領域を使用すると、ある領域の内容が他の領域のデータに依存する、より複雑なレイアウトを作成できます。
XML ファイルのデータを使用して入れ子の領域で差し込み印刷を実行する手順は次のとおりです。
using Spire.Doc;
using System.Collections;
using System.Data;
namespace MailMergeWithNestedRegions
{
class Program
{
static void Main(string[] args)
{
// Documentオブジェクトを作成
Document document = new Document();
// テンプレートWord文書を読み込む
document.LoadFromFile("Sample.docx");
// XMLファイルからデータを読み込んでDataSetオブジェクトに格納
DataSet dataSet = new DataSet();
dataSet.ReadXml("Sample.xml");
// マージフィールド情報を格納するListオブジェクトを作成
List<DictionaryEntry> list = new List<DictionaryEntry>();
// 2つのDictionaryEntryオブジェクトを作成し、リストに追加する(それぞれのオブジェクトはマージフィールド名と関連する式を指定)
DictionaryEntry dictionaryEntry = new DictionaryEntry("会員紹介", string.Empty);
list.Add(dictionaryEntry);
dictionaryEntry = new DictionaryEntry("会員情報", "会員ID = %会員紹介.会員ID%");
list.Add(dictionaryEntry);
// ネストされた領域を持つメールマージ操作を実行
document.MailMerge.ExecuteWidthNestedRegion(dataSet, list);
// ファイルに保存
document.SaveToFile("output/入れ子の領域での差し込み印刷.docx", FileFormat.Docx2019);
// リソースを解放
document.Dispose();
}
}
}
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。
Word ドキュメントからコンテンツを読み取ることは、多くの仕事や学習タスクにおいて重要です。Word ドキュメントからページを読むことは、主要な情報を素早く閲覧し要約するのに役立ち、Word ドキュメントからセクションを読むことは、特定のトピックやセクションを深く理解するのに役立ちます。一方、Word ドキュメント全体を読むことは、全体的な情報を包括的に把握し、総合的な分析と理解を促進します。この記事では、Spire.Doc for .NET を使用して C# プロジェクト内で Word ドキュメントのページ、セクション、および全体のコンテンツを読み取る方法を紹介します。
まず、Spire.Doc for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。
PM> Install-Package Spire.Doc
FixedLayoutDocument クラスと FixedLayoutPage クラスを使用すると、指定されたページのコンテンツを簡単に取得できます。抽出したコンテンツを表示しやすくするために、このサンプルコードでは読み取ったコンテンツを新しい Word ドキュメントに保存します。詳細な手順は以下の通りです:
using Spire.Doc;
using Spire.Doc.Pages;
using Spire.Doc.Documents;
namespace SpireDocDemo
{
internal class Program
{
static void Main(string[] args)
{
// 新しいドキュメントオブジェクトを作成する
Document document = new Document();
// 指定されたファイルからドキュメントの内容をロードする
document.LoadFromFile("Sample.docx");
// 固定レイアウトドキュメントオブジェクトを作成する
FixedLayoutDocument layoutDoc = new FixedLayoutDocument(document);
// 最初のページを取得する
FixedLayoutPage page = layoutDoc.Pages[0];
// ページが含まれているセクションを取得する
Section section = page.Section;
// ページの最初の段落を取得する
Paragraph paragraphStart = page.Columns[0].Lines[0].Paragraph;
int startIndex = 0;
if (paragraphStart != null)
{
// セクション内の段落のインデックスを取得する
startIndex = section.Body.ChildObjects.IndexOf(paragraphStart);
}
// ページの最後の段落を取得する
Paragraph paragraphEnd = page.Columns[0].Lines[page.Columns[0].Lines.Count - 1].Paragraph;
int endIndex = 0;
if (paragraphEnd != null)
{
// セクション内の段落のインデックスを取得する
endIndex = section.Body.ChildObjects.IndexOf(paragraphEnd);
}
// 新しいドキュメントオブジェクトを作成する
Document newdoc = new Document();
// 新しいセクションを追加する
Section newSection = newdoc.AddSection();
// 元のセクションのプロパティを新しいセクションにクローンする
section.CloneSectionPropertiesTo(newSection);
// 元のドキュメントのページの内容を新しいドキュメントにコピーする
for (int i = startIndex; i <= endIndex; i++)
{
newSection.Body.ChildObjects.Add(section.Body.ChildObjects[i].Clone());
}
// 新しいドキュメントを指定されたファイルに保存する
newdoc.SaveToFile("Wordのページから内容を読む.docx", Spire.Doc.FileFormat.Docx);
// 新しいドキュメントを閉じてリソースを解放する
newdoc.Close();
newdoc.Dispose();
// 元のドキュメントを閉じてリソースを解放する
document.Close();
document.Dispose();
}
}
}
Document.Sections[index] プロパティを使用すると、ヘッダー、フッター、本文コンテンツを含む特定のセクションオブジェクトを取得できます。この例では、セクションのすべてのコンテンツを別のドキュメントにコピーする簡単な方法を提供します。詳細な手順は以下の通りです:
using Spire.Doc;
namespace ReadWordSectionContent
{
internal class Program
{
static void Main(string[] args)
{
// 新しいドキュメントオブジェクトを作成する
Document document = new Document();
// ファイルからWordドキュメントをロードする
document.LoadFromFile("Sample.docx");
// ドキュメントの2番目のセクションを取得する
Section section = document.Sections[1];
// 新しいドキュメントオブジェクトを作成する
Document newdoc = new Document();
// デフォルトスタイルを新しいドキュメントにクローンする
document.CloneDefaultStyleTo(newdoc);
// 2番目のセクションを新しいドキュメントにクローンする
newdoc.Sections.Add(section.Clone());
// 新しいドキュメントをファイルに保存する
newdoc.SaveToFile("Wordのセクションから内容を読む.docx", Spire.Doc.FileFormat.Docx);
// 新しいドキュメントオブジェクトを閉じてリソースを解放する
newdoc.Close();
newdoc.Dispose();
// 元のドキュメントオブジェクトを閉じてリソースを解放する
document.Close();
document.Dispose();
}
}
}
この例では、元のドキュメントの各セクションを順に繰り返し処理し、各セクションを新しいドキュメントにクローンすることで、ドキュメント全体のコンテンツを読み取る方法を示します。詳細な手順は以下の通りです:
using Spire.Doc;
namespace ReadWordDocumentContent
{
internal class Program
{
static void Main(string[] args)
{
// 新しいドキュメントオブジェクトを作成する
Document document = new Document();
// ファイルからWordドキュメントをロードする
document.LoadFromFile("Sample.docx");
// 新しいドキュメントオブジェクトを作成する
Document newdoc = new Document();
// デフォルトスタイルを新しいドキュメントにクローンする
document.CloneDefaultStyleTo(newdoc);
// 元のドキュメントの各セクションを反復処理して新しいドキュメントにクローンする
foreach (Section sourceSection in document.Sections)
{
newdoc.Sections.Add(sourceSection.Clone());
}
// 新しいドキュメントをファイルに保存する
newdoc.SaveToFile("Word文書からコンテンツを読み込む.docx", Spire.Doc.FileFormat.Docx);
// 新しいドキュメントオブジェクトを閉じてリソースを解放する
newdoc.Close();
newdoc.Dispose();
// 元のドキュメントオブジェクトを閉じてリソースを解放する
document.Close();
document.Dispose();
}
}
}
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。
Word ドキュメントにページを追加、挿入、削除することは、コンテンツの管理と提示にとって重要です。Word に新しいページを追加または挿入することで、ドキュメントを拡張してより多くのコンテンツを収容し、より構造化され読みやすくすることができます。ページを削除することで、不必要な情報や誤ったコンテンツを取り除いてドキュメントを整理するのに役立ちます。この記事では、Spire.Doc for .NET を使用して C# プロジェクト内で Word ドキュメントにページを追加、挿入、または削除する方法を説明します。
まず、Spire.Doc for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。
PM> Install-Package Spire.Doc
Word ドキュメントの末尾に新しいページを追加する手順は、まず最後のセクションを取得し、そのセクションの最後の段落の末尾に改ページを挿入して、後で追加されるコンテンツが新しいページに表示されるようにすることです。以下は詳細な手順です:
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Pages;
namespace AddPageWord
{
class Program
{
static void Main(string[] args)
{
// 新しいドキュメントオブジェクトを作成する
Document document = new Document();
// ドキュメントをロードする
document.LoadFromFile("Sample.docx");
// ドキュメントの最後のセクションの本文を取得する
Body body = document.LastSection.Body;
// 本文の最後の段落の後に改ページを挿入する
body.LastParagraph.AppendBreak(BreakType.PageBreak);
// 新しい段落スタイルを作成する
ParagraphStyle paragraphStyle = new ParagraphStyle(document);
paragraphStyle.Name = "CustomParagraphStyle1";
paragraphStyle.ParagraphFormat.LineSpacing = 12;
paragraphStyle.ParagraphFormat.AfterSpacing = 8;
paragraphStyle.CharacterFormat.FontName = "Yu Mincho";
paragraphStyle.CharacterFormat.FontSize = 12;
// ドキュメントのスタイルコレクションに段落スタイルを追加する
document.Styles.Add(paragraphStyle);
// 新しい段落を作成し、テキスト内容を設定する
Paragraph paragraph = new Paragraph(document);
paragraph.AppendText("弊社の Spire.Doc for .NET 製品をご利用いただきありがとうございます。試用版では生成されるドキュメントに赤い透かしが追加され、最初の10ページのみ他の形式に変換可能です。ライセンスを購入して適用すると、これらの透かしが削除され、機能制限が解除されます。");
// 段落スタイルを適用する
paragraph.ApplyStyle(paragraphStyle.Name);
// 段落を本文のコンテンツコレクションに追加する
body.ChildObjects.Add(paragraph);
// もう一つの新しい段落を作成し、テキスト内容を設定する
paragraph = new Paragraph(document);
paragraph.AppendText("製品をより完全に体験していただくために、お客様には1ヶ月の無料仮ライセンスを提供しています。sales @e-iceblue.com にメールを送っていただければ、1営業日以内にライセンスをお送りします。");
// 段落スタイルを適用する
paragraph.ApplyStyle(paragraphStyle.Name);
// 段落を本文のコンテンツコレクションに追加する
body.ChildObjects.Add(paragraph);
// 指定されたパスにドキュメントを保存する
document.SaveToFile("Wordにページを追加.docx", FileFormat.Docx);
// ドキュメントを閉じる
document.Close();
// ドキュメントオブジェクトのリソースを解放する
document.Dispose();
}
}
}
新しいページを挿入する前に、セクション内の指定されたページコンテンツの終了位置インデックスを特定する必要があります。その後、この位置の後に新しいページのコンテンツを一つずつドキュメントに追加します。最後に、コンテンツを後続のページから分離するために改ページを追加することが重要です。詳細な手順は以下の通りです:
using Spire.Doc;
using Spire.Doc.Pages;
using Spire.Doc.Documents;
namespace InsertPageWord
{
internal class Program
{
static void Main(string[] args)
{
// 新しいドキュメントオブジェクトを作成する
Document document = new Document();
// サンプルドキュメントをファイルからロードする
document.LoadFromFile("Sample.docx");
// 固定レイアウトドキュメントオブジェクトを作成する
FixedLayoutDocument layoutDoc = new FixedLayoutDocument(document);
// 最初のページを取得する
FixedLayoutPage page = layoutDoc.Pages[0];
// ドキュメントの本文を取得する
Body body = page.Section.Body;
// 現在のページの最後の段落を取得する
Paragraph paragraphEnd = page.Columns[0].Lines[page.Columns[0].Lines.Count - 1].Paragraph;
// 終了インデックスを初期化する
int endIndex = 0;
if (paragraphEnd != null)
{
// 最後の段落のインデックスを取得する
endIndex = body.ChildObjects.IndexOf(paragraphEnd);
}
// 新しい段落スタイルを作成する
ParagraphStyle paragraphStyle = new ParagraphStyle(document);
paragraphStyle.Name = "CustomParagraphStyle1";
paragraphStyle.ParagraphFormat.LineSpacing = 12;
paragraphStyle.ParagraphFormat.AfterSpacing = 8;
paragraphStyle.CharacterFormat.FontName = "Yu Mincho";
paragraphStyle.CharacterFormat.FontSize = 12;
// ドキュメントのスタイルコレクションに段落スタイルを追加する
document.Styles.Add(paragraphStyle);
// 新しい段落を作成し、テキスト内容を設定する
Paragraph paragraph = new Paragraph(document);
paragraph.AppendText("弊社の Spire.Doc for .NET 製品をご利用いただきありがとうございます。試用版では生成されるドキュメントに赤い透かしが追加され、最初の10ページのみ他の形式に変換可能です。ライセンスを購入して適用すると、これらの透かしが削除され、機能制限が解除されます。");
// 段落スタイルを適用する
paragraph.ApplyStyle(paragraphStyle.Name);
// 指定された位置に段落を挿入する
body.ChildObjects.Insert(endIndex + 1, paragraph);
// もう一つの新しい段落を作成する
paragraph = new Paragraph(document);
paragraph.AppendText("製品をより完全に体験していただくために、お客様には1ヶ月の無料仮ライセンスを提供しています。sales @e-iceblue.com にメールを送っていただければ、1営業日以内にライセンスをお送りします。");
// 段落スタイルを適用する
paragraph.ApplyStyle(paragraphStyle.Name);
// 改ページを追加する
paragraph.AppendBreak(BreakType.PageBreak);
// 指定された位置に段落を挿入する
body.ChildObjects.Insert(endIndex + 2, paragraph);
// 指定されたパスにドキュメントを保存する
document.SaveToFile("Wordにページを挿入.docx", Spire.Doc.FileFormat.Docx);
// ドキュメントを閉じ、リソースを解放する
document.Close();
document.Dispose();
}
}
}
ページのコンテンツを削除するには、まずドキュメント内のそのページの開始要素と終了要素のインデックス位置を特定します。その後、これらの要素を一つずつ順に削除するためにループを利用します。詳細な手順は以下の通りです:
using Spire.Doc;
using Spire.Doc.Pages;
using Spire.Doc.Documents;
namespace DeletePageWord
{
internal class Program
{
static void Main(string[] args)
{
// 新しいドキュメントオブジェクトを作成する
Document document = new Document();
// サンプルドキュメントをファイルからロードする
document.LoadFromFile("Wordにページを挿入.docx");
// 固定レイアウトドキュメントオブジェクトを作成する
FixedLayoutDocument layoutDoc = new FixedLayoutDocument(document);
// 2ページ目を取得する
FixedLayoutPage page = layoutDoc.Pages[1];
// ページのセクションを取得する
Section section = page.Section;
// 1ページ目の最初の段落を取得する
Paragraph paragraphStart = page.Columns[0].Lines[0].Paragraph;
int startIndex = 0;
if (paragraphStart != null)
{
// 開始段落のインデックスを取得する
startIndex = section.Body.ChildObjects.IndexOf(paragraphStart);
}
// 最後のページの最後の段落を取得する
Paragraph paragraphEnd = page.Columns[0].Lines[page.Columns[0].Lines.Count - 1].Paragraph;
int endIndex = 0;
if (paragraphEnd != null)
{
// 終了段落のインデックスを取得する
endIndex = section.Body.ChildObjects.IndexOf(paragraphEnd);
}
// 指定された範囲内のすべてのコンテンツを削除する
for (int i = 0; i <= (endIndex - startIndex); i++)
{
section.Body.ChildObjects.RemoveAt(startIndex);
}
// 指定されたパスにドキュメントを保存する
document.SaveToFile("Wordからページを削除.docx", Spire.Doc.FileFormat.Docx);
// ドキュメントを閉じ、リソースを解放する
document.Close();
document.Dispose();
}
}
}
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。
Word ドキュメント内の数式は、数学的な概念や関係を表現するための重要なツールです。学術論文、科学レポート、またはその他の数学的内容を含む文書を書く際に、数式を組み込むことで複雑な数学的概念を効果的に伝え、文書の視覚的魅力と専門性を向上させることができます。本記事では、C# で Spire.Doc for .NET を使用して、Word ドキュメントに数式を挿入する方法を説明します。
まず、Spire.Doc for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。
PM> Install-Package Spire.Doc
Spire.Doc for .NET を使用すると、OfficeMath.FromLatexMathCode(string latexMathCode) メソッドおよび OfficeMath.FromMathMLCode(string mathMLCode) メソッドを使用して、LaTeX コードおよび MathML コードから数式を生成できます。詳細な手順は以下の通りです:
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields.OMath;
namespace AddMathEquations
{
internal class Program
{
static void Main(string[] args)
{
// LaTeXコードから文字列配列を作成する
string[] latexMathCode = {
"x^{2}+\\sqrt{x^{2}+1}=2",
"\\cos (2\\theta) = \\cos^2 \\theta - \\sin^2 \\theta",
"k_{n+1} = n^2 + k_n^2 - k_{n-1}",
"\\frac {\\frac {1}{x}+ \\frac {1}{y}}{y-z}",
"\\int_0^ \\infty \\mathrm {e}^{-x} \\, \\mathrm {d}x",
"\\forall x \\in X, \\quad \\exists y \\leq \\epsilon",
"\\alpha, \\beta, \\gamma, \\Gamma, \\pi, \\Pi, \\phi, \\varphi, \\mu, \\Phi",
"A_{m,n} = \\begin{pmatrix} a_{1,1} & a_{1,2} & \\cdots & a_{1,n} \\\\ a_{2,1} & a_{2,2} & \\cdots & a_{2,n} \\\\ \\vdots & \\vdots & \\ddots & \\vdots \\\\ a_{m,1} & a_{m,2} & \\cdots & a_{m,n} \\end{pmatrix}",
};
// MathMLコードから文字列配列を作成する
string[] mathMLCode = {
"<math xmlns=\"http://www.w3.org/1998/Math/MathML\"><mi>a</mi><mo>≠</mo><mn>0</mn></math>",
"<math xmlns=\"http://www.w3.org/1998/Math/MathML\"><mi>a</mi><msup><mi>x</mi><mn>2</mn></msup><mo>+</mo><mi>b</mi><mi>x</mi><mo>+</mo><mi>c</mi><mo>=</mo><mn>0</mn></math>",
"<math xmlns=\"http://www.w3.org/1998/Math/MathML\"><mi>x</mi><mo>=</mo><mrow><mfrac><mrow><mo>−</mo><mi>b</mi><mo>±</mo><msqrt><msup><mi>b</mi><mn>2</mn></msup><mo>−</mo><mn>4</mn><mi>a</mi><mi>c</mi></msqrt></mrow><mrow><mn>2</mn><mi>a</mi></mrow></mfrac></mrow></math>",
};
// Documentインスタンスを作成する
Document doc = new Document();
// セクションを追加する
Section section = doc.AddSection();
// セクションに段落を追加する
Paragraph textPara = section.AddParagraph();
textPara.AppendText("LaTeXコードからの数式の作成");
textPara.ApplyStyle(BuiltinStyle.Heading1);
textPara.Format.HorizontalAlignment = HorizontalAlignment.Left;
// 文字列配列の各LaTeXコードを反復処理する
for (int i = 0; i < latexMathCode.Length; i++)
{
// LaTeXコードから数式を作成する
OfficeMath officeMath = new OfficeMath(doc);
officeMath.FromLatexMathCode(latexMathCode[i]);
// 数式をセクションに追加する
Paragraph paragraph = section.AddParagraph();
paragraph.Items.Add(officeMath);
section.AddParagraph();
}
section.AddParagraph();
// セクションに段落を追加する
textPara = section.AddParagraph();
textPara.AppendText("MathMLコードからの数式の作成");
textPara.ApplyStyle(BuiltinStyle.Heading1);
textPara.Format.HorizontalAlignment = HorizontalAlignment.Left;
// 文字列配列の各MathMLコードを反復処理する
for (int j = 0; j < mathMLCode.Length; j++)
{
// MathMLコードから数式を作成する
OfficeMath officeMath = new OfficeMath(doc);
officeMath.FromMathMLCode(mathMLCode[j]);
// 数式をセクションに追加する
Paragraph paragraph = section.AddParagraph();
paragraph.Items.Add(officeMath);
section.AddParagraph();
}
// 結果文書を保存する
doc.SaveToFile("Word文書に数式を挿入.docx", FileFormat.Docx2019);
doc.Dispose();
}
}
}
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。
MS Word では、元のドキュメントから内容を手動で切り取り、新しいドキュメントに貼り付けることで、ドキュメントを分割することができます。この作業は簡単ですが、特に長いドキュメントを扱う場合、非常に面倒で時間がかかることもあります。この記事では、Spire.Doc for .NET を使用して、プログラムによって Word ドキュメントを複数のファイルに分割する方法について説明します。
まず、Spire.Doc for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。
PM> Install-Package Spire.Doc
Word ドキュメントには、改ページによって区切られた複数のページを含めることができます。Word ドキュメントを改ページで分割するには、以下の手順とコードを参照してください。
using System;
using Spire.Doc;
using Spire.Doc.Documents;
namespace SplitByPageBreak
{
class Program
{
static void Main(string[] args)
{
//Documentのインスタンスを作成する
Document original = new Document();
//Wordドキュメントを読み込む
original.LoadFromFile("C:/サンプル.docx");
//新しいWordドキュメントを作成し、それにセクションを追加する
Document newWord = new Document();
Section section = newWord.AddSection();
int index = 0;
//元のドキュメントに含まれるすべてのセクションをループする
foreach (Section sec in original.Sections)
{
//各セクションのボディーの子オブジェクトをすべてループする。
foreach (DocumentObject obj in sec.Body.ChildObjects)
{
if (obj is Paragraph)
{
Paragraph para = obj as Paragraph;
sec.CloneSectionPropertiesTo(section);
//元のドキュメントのセクションにある段落オブジェクトを、新しいドキュメントのセクションに追加する
section.Body.ChildObjects.Add(para.Clone());
//各段落のすべての子オブジェクトをループし、オブジェクトが改ページであるかどうかを判断する
foreach (DocumentObject parobj in para.ChildObjects)
{
if (parobj is Break && (parobj as Break).BreakType == BreakType.PageBreak)
{
//段落内の改ページのインデックスを取得する
int i = para.ChildObjects.IndexOf(parobj);
//その段落から改ページを削除する
section.Body.LastParagraph.ChildObjects.RemoveAt(i);
//新しいWordドキュメントを保存する
newWord.SaveToFile(String.Format("result/分割-{0}.docx", index), FileFormat.Docx);
index++;
//新しいドキュメントを作成し、それにセクションを追加する
newWord = new Document();
section = newWord.AddSection();
//元のセクションの段落オブジェクトを、新しいドキュメントのセクションに追加する
section.Body.ChildObjects.Add(para.Clone());
if (section.Paragraphs[0].ChildObjects.Count == 0)
{
//最初の空白の段落を削除する
section.Body.ChildObjects.RemoveAt(0);
}
else
{
//改ページ前の子オブジェクトを削除する
while (i >= 0)
{
section.Paragraphs[0].ChildObjects.RemoveAt(i);
i--;
}
}
}
}
}
if (obj is Table)
{
//元セクションの表のオブジェクトを、新しいドキュメントのセクションに追加する
section.Body.ChildObjects.Add(obj.Clone());
}
}
}
//ドキュメントを保存する
newWord.SaveToFile(String.Format("result/分割-{0}.docx", index), FileFormat.Docx);
}
}
}
Imports System
Imports Spire.Doc
Imports Spire.Doc.Documents
Namespace SplitByPageBreak
Class Program
Shared Sub Main(ByVal args() As String)
'Documentのインスタンスを作成する
Dim original As Document = New Document()
'Wordドキュメントを読み込む
original.LoadFromFile("C:/サンプル.docx")
'新しいWordドキュメントを作成し、それにセクションを追加する
Dim NewWord As Document = New Document()
Dim section As Section = NewWord.AddSection()
Dim index As Integer = 0
'元のドキュメントに含まれるすべてのセクションをループする
Dim sec As Section
For Each sec In original.Sections
'各セクションのボディーの子オブジェクトをすべてループする。
Dim obj As DocumentObject
For Each obj In sec.Body.ChildObjects
If TypeOf obj Is Paragraph Then
Dim para As Paragraph = obj As Paragraph
sec.CloneSectionPropertiesTo(section)
'元のドキュメントのセクションにある段落オブジェクトを、新しいドキュメントのセクションに追加する
section.Body.ChildObjects.Add(para.Clone())
'各段落のすべての子オブジェクトをループし、オブジェクトが改ページであるかどうかを判断する
Dim parobj As DocumentObject
For Each parobj In para.ChildObjects
If TypeOf parobj Is Break && (parobj as Break).BreakType = BreakType.PageBreak Then
'段落内の改ページのインデックスを取得する
Dim i As Integer = para.ChildObjects.IndexOf(parobj)
'その段落から改ページを削除する
section.Body.LastParagraph.ChildObjects.RemoveAt(i)
'新しいWordドキュメントを保存する
NewWord.SaveToFile(String.Format("result/分割-{0}.docx", index), FileFormat.Docx)
index = index + 1
'新しいドキュメントを作成し、それにセクションを追加する
NewWord = New Document()
section = NewWord.AddSection()
'元のセクションの段落オブジェクトを、新しいドキュメントのセクションに追加する
section.Body.ChildObjects.Add(para.Clone())
If section.Paragraphs(0).ChildObjects.Count = 0 Then
'最初の空白の段落を削除する
section.Body.ChildObjects.RemoveAt(0)
Else
'改ページ前の子オブジェクトを削除する
While i >= 0
section.Paragraphs(0).ChildObjects.RemoveAt(i)
i = i - 1
End While
End If
End If
Next
End If
If TypeOf obj Is Table Then
'元セクションの表のオブジェクトを、新しいドキュメントのセクションに追加する
section.Body.ChildObjects.Add(obj.Clone())
End If
Next
Next
'ドキュメントを保存する
NewWord.SaveToFile(String.Format("result/分割-{0}.docx", index), FileFormat.Docx)
End Sub
End Class
End Namespace
Word ドキュメントでは、セクションは、それ自身のページ書式を含むドキュメントの一部分です。複数のセクションを含むドキュメントの場合、Spire.Doc for .NET はセクションの区切りによるドキュメントの分割もサポートしています。詳しい手順は以下の通りです。
using System;
using Spire.Doc;
namespace SplitBySectionBreak
{
class Program
{
static void Main(string[] args)
{
//Documentのインスタンスを作成する
Document document = new Document();
//Wordドキュメントを読み込む
document.LoadFromFile("C:/サンプル.docx");
//新しいDocumentのオブジェクトを作成する
Document newWord;
//元のドキュメント内のすべてのセクションをループする
for (int i = 0; i < document.Sections.Count; i++)
{
newWord = new Document();
//元ドキュメントの各セクションをコピーして、新しいセクションとして新ドキュメントに追加する
newWord.Sections.Add(document.Sections[i].Clone());
//ドキュメントを保存する
newWord.SaveToFile(String.Format(@"test\出力_{0}.docx", i));
}
}
}
}
Imports System
Imports Spire.Doc
Namespace SplitBySectionBreak
Class Program
Shared Sub Main(ByVal args() As String)
'Documentのインスタンスを作成する
Dim document As Document = New Document()
'Wordドキュメントを読み込む
document.LoadFromFile("C:/サンプル.docx")
'新しいDocumentのオブジェクトを作成する
Dim NewWord As Document
'元のドキュメント内のすべてのセクションをループする
Dim i As Integer
For i = 0 To document.Sections.Count - 1 Step i + 1
NewWord = New Document()
'元ドキュメントの各セクションをコピーして、新しいセクションとして新ドキュメントに追加する
NewWord.Sections.Add(document.Sections(i).Clone())
'ドキュメントを保存する
NewWord.SaveToFile(String.Format("test\出力_{0}.docx", i))
Next
End Sub
End Class
End Namespace
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。
MS Word の「変更履歴」は、人がドキュメントに加えた改訂、修正、変更、編集、さらには提案やコメントを追跡できます。変更履歴をオンにした状態で改訂されたドキュメントを受け取った場合、元の内容を維持するために変更を元に戻すか、または変更を承諾するかを決定することができます。この記事では、Spire.Doc for .NET を使用して、プログラム的に Word ドキュメントのすべての変更履歴を承諾または元に戻す方法について説明します。
まず、Spire.Doc for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。
PM> Install-Package Spire.Doc
Spire.Doc for .NET が提供する Document.AcceptChanges() メソッドを使用すると、Word ドキュメント内のすべての変更を承諾することができます。詳しい手順は以下の通りです。
using Spire.Doc;
namespace AcceptTrackedChanges
{
class Program
{
static void Main(string[] args)
{
//Documentのインスタンスを作成する
Document doc = new Document();
//Word ドキュメントを読み込む
doc.LoadFromFile("C:/宇宙の視野.docx");
//ドキュメントのすべての変更を承諾する
doc.AcceptChanges();
//ドキュメントを保存する
doc.SaveToFile("変更履歴の承諾.docx", FileFormat.Docx);
}
}
}
Imports Spire.Doc
Namespace AcceptTrackedChanges
Class Program
Shared Sub Main(ByVal args() As String)
'Documentのインスタンスを作成する
Dim doc As Document = New Document()
'Word ドキュメントを読み込む
doc.LoadFromFile("C:/宇宙の視野.docx")
'ドキュメントのすべての変更を承諾する
doc.AcceptChanges()
'ドキュメントを保存する
doc.SaveToFile("変更履歴の承諾.docx", FileFormat.Docx)
End Sub
End Class
End Namespace
Spire.Doc for .NET は、Word ドキュメント内のすべての変更を元に戻すための Document.RejectChanges() メソッドも提供しています。詳しい手順は以下の通りです。
using Spire.Doc;
namespace RejectTrackedChanges
{
class Program
{
static void Main(string[] args)
{
//Documentのインスタンスを作成する
Document doc = new Document();
//Word ドキュメントを読み込む
doc.LoadFromFile("C:/宇宙の視野.docx");
//ドキュメントのすべての変更点を元に戻す
doc.RejectChanges();
//ドキュメントを保存する
doc.SaveToFile("変更履歴を元に戻す.docx", FileFormat.Docx);
}
}
}
Imports Spire.Doc
Namespace RejectTrackedChanges
Class Program
Shared Sub Main(ByVal args() As String)
'Documentのインスタンスを作成する
Dim doc As Document = New Document()
'Word ドキュメントを読み込む
doc.LoadFromFile("C:/宇宙の視野.docx")
'ドキュメントのすべての変更点を元に戻す
doc.RejectChanges()
'ドキュメントを保存する
doc.SaveToFile("変更履歴を元に戻す.docx", FileFormat.Docx)
End Sub
End Class
End Namespace
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。
長い論文や研究報告書は、複数の人が共同で仕上げることが多いものです。時間を節約するために、各自が割り当てられた部分を別々のドキュメントで作業し、編集が終わった後にこれらのドキュメントを1つに統合することができます。この記事では、Word ドキュメントから別のドキュメントへ内容を手動でコピー&ペーストする方法とは別に、プログラム的に Spire.Doc for .NET を使用して Word ドキュメントを結合する以下の2つの方法について説明します。
まず、Spire.Doc for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。
PM> Install-Package Spire.Doc
Spire.Doc for .NET が提供する Document.InsertTextFromFile() メソッドは、他のドキュメントを完全にそのドキュメントに挿入して、Word ドキュメントを結合させます。このメソッドを使用すると、挿入されたドキュメントの内容は新しいページから開始されます。詳細な手順は以下の通りです。
using Spire.Doc;
namespace MergeWord
{
class Program
{
static void Main(string[] args)
{
//Documentのインスタンスを作成する
Document document = new Document();
//元のWordドキュメントを読み込む
document.LoadFromFile("C:/宇宙の視野.docx", FileFormat.Docx);
//元のドキュメントに別のWordドキュメントを完全に挿入する
document.InsertTextFromFile("C:/定義を超えた意味.docx", FileFormat.Docx);
//結果ドキュメントを保存する
document.SaveToFile("ドキュメントの結合.docx", FileFormat.Docx);
}
}
}
Imports Spire.Doc
Namespace MergeWord
Class Program
Shared Sub Main(ByVal args() As String)
'Documentのインスタンスを作成する
Dim document As Document = New Document()
'元のWordドキュメントを読み込む
document.LoadFromFile("C:/宇宙の視野.docx", FileFormat.Docx)
'元のドキュメントに別のWordドキュメントを完全に挿入する
document.InsertTextFromFile("C:/定義を超えた意味.docx", FileFormat.Docx)
'結果ドキュメントを保存する
document.SaveToFile("ドキュメントの結合.docx", FileFormat.Docx)
End Sub
End Class
End Namespace
新しいページを始めずにドキュメントを結合したい場合、他のドキュメントの内容をクローンして、元のドキュメントの末尾に追加することができます。詳しい手順は以下の通りです。
using Spire.Doc;
namespace MergeWord
{
class Program
{
static void Main(string[] args)
{
//2つのWordドキュメントを読み込む
Document doc1 = new Document("C:/宇宙の視野.docx");
Document doc2 = new Document("C:/定義を超えた意味.docx");
//2番目のドキュメントをループしてすべてのセクションを取得する
foreach (Section section in doc2.Sections)
{
//2番目のドキュメントのセクションをループして、その子オブジェクトを取得する
foreach (DocumentObject obj in section.Body.ChildObjects)
{
//最初のドキュメントで最後のセクションを取得する
Section lastSection = doc1.LastSection;
//すべての子オブジェクトを、最初のドキュメントで最後のセクションに追加する
lastSection.Body.ChildObjects.Add(obj.Clone());
}
}
// 結果ドキュメントを保存する
doc1.SaveToFile("ドキュメントの結合.docx", FileFormat.Docx);
}
}
}
Imports Spire.Doc
Namespace MergeWord
Class Program
Shared Sub Main(ByVal args() As String)
'2つのWordドキュメントを読み込む
Dim doc1 As Document = New Document("C:/宇宙の視野.docx")
Dim doc2 As Document = New Document("C:/定義を超えた意味.docx")
'2番目のドキュメントをループしてすべてのセクションを取得する
Dim section As Section
For Each section In doc2.Sections
'2番目のドキュメントのセクションをループして、その子オブジェクトを取得する
Dim obj As DocumentObject
For Each obj In section.Body.ChildObjects
'最初のドキュメントで最後のセクションを取得する
Dim lastSection As Section = doc1.LastSection
'すべての子オブジェクトを、最初のドキュメントで最後のセクションに追加する
lastSection.Body.ChildObjects.Add(obj.Clone())
Next
Next
' 結果ドキュメントを保存する
doc1.SaveToFile("ドキュメントの結合.docx", FileFormat.Docx)
End Sub
End Class
End Namespace
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。
文書プロパティ(メタデータとも呼ばれる)とは、文書に関する一連の情報のことです。すべての Word 文書には、タイトル、著者名、テーマ、キーワードなど、一連の組み込み文書プロパティが付属しています。内蔵の文書プロパティに加えて、Microsoft Word では、ユーザーが Word 文書にカスタム文書プロパティを追加することもできます。この記事では、Spire.Doc for .NET を使用して、C# と VB.NET で Word 文書に文書プロパティを追加する方法を説明します。
まず、Spire.Doc for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。
PM> Install-Package Spire.Doc
標準文書プロパティは、名前と値で構成されています。標準文書プロパティは、Microsoft Word によって事前に定義されているため、名前を設定または変更することはできませんが、値を設定または変更することは可能です。
次の手順では、Word 文書内の内蔵文書プロパティに値を設定する方法を説明します。
using Spire.Doc;
namespace AddBuiltinDocumentProperties
{
class Program
{
static void Main(string[] args)
{
//Documentクラスのインスタンスを作成する
Document document = new Document();
//Word文書の読み込み
document.LoadFromFile("洞窟芸術.docx");
//組み込みの文書プロパティを文書に追加する
BuiltinDocumentProperties standardProperties = document.BuiltinDocumentProperties;
standardProperties.Title = "洞窟芸術";
standardProperties.Subject = "石器時代の芸術";
standardProperties.Author = "Izzy Wisher";
standardProperties.Company = "Aeon.co";
standardProperties.Manager = "Nigel Warburton";
standardProperties.Category = "芸術";
standardProperties.Keywords = "洞窟芸術、石器時代";
standardProperties.Comments = "石器時代の洞窟芸術を紹介した資料です。";
//結果文書を保存する
document.SaveToFile("標準文書プロパティ.docx", FileFormat.Docx2013);
}
}
}
Imports Spire.Doc
Namespace AddBuiltinDocumentProperties
Class Program
Shared Sub Main(ByVal args() As String)
'Documentクラスのインスタンスを作成する
Dim document As Document = New Document()
'Word文書の読み込み
document.LoadFromFile("洞窟芸術.docx")
'組み込みの文書プロパティを文書に追加する
Dim standardProperties As BuiltinDocumentProperties = document.BuiltinDocumentProperties
standardProperties.Title = "洞窟芸術"
standardProperties.Subject = "石器時代の芸術"
standardProperties.Author = "Izzy Wisher"
standardProperties.Company = "Aeon.co"
standardProperties.Manager = "Nigel Warburton"
standardProperties.Category = "芸術"
standardProperties.Keywords = "洞窟芸術、石器時代"
standardProperties.Comments = "石器時代の洞窟芸術を紹介した資料です。"
'結果文書を保存する
document.SaveToFile("標準文書プロパティ.docx", FileFormat.Docx2013)
End Sub
End Class
End Namespace
カスタム文書プロパティは、文書の作成者やユーザが定義することができます。各カスタム文書プロパティは、名前、値、データ型を含む必要があります。データ型は、この4つの種類(Text、Date、Number、Yes or No)のうちの1つです。
以下の手順は、Word 文書にさまざまなデータ型を持つカスタム文書プロパティを追加する方法を示しています。
using Spire.Doc;
using System;
namespace AddCustomDocumentProperties
{
class Program
{
static void Main(string[] args)
{
//Documentクラスのインスタンスを作成する
Document document = new Document();
//Word文書の読み込み
document.LoadFromFile("洞窟芸術.docx");
//カスタム文書プロパティを文書に追加する
CustomDocumentProperties customProperties = document.CustomDocumentProperties;
customProperties.Add("文書ID", 1);
customProperties.Add("許可取得の有無", true);
customProperties.Add("許可者", "John Smith");
customProperties.Add("許可日", DateTime.Today);
//結果文書を保存する
document.SaveToFile("カスタム文書プロパティ.docx", FileFormat.Docx2013);
}
}
}
Imports Spire.Doc
Imports System
Imports System.Reflection.Metadata
Namespace AddCustomDocumentProperties
Class Program
Shared Sub Main(ByVal args() As String)
'Documentクラスのインスタンスを作成する
Dim document As Document = New Document()
'Word文書の読み込み
document.LoadFromFile("洞窟芸術.docx")
'カスタム文書プロパティを文書に追加する
Dim customProperties As CustomDocumentProperties = document.CustomDocumentProperties
customProperties.Add("文書ID", 1)
customProperties.Add("許可取得の有無", True)
customProperties.Add("許可者", "John Smith")
customProperties.Add("許可日", DateTime.Today)
'結果文書を保存する
document.SaveToFile("カスタム文書プロパティ.docx", FileFormat.Docx2013)
End Sub
End Class
End Namespace
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。