チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル»docnettable

Displaying items by tag: docnettable

Word 表の罫線を追加、変更、削除することで、データの可読性、美しさ、整理が向上します。罫線を追加することで、セルごとの内容が明確になり、情報を迅速に見分けやすくなります。罫線のスタイル(線の太さ、色、パターンなど)を変更することで、重要なデータを強調したり、視覚的な流れを導いたり、特定の文書スタイルやデザイン要件に適合させることができます。一方で、罫線を削除することで、視覚的な混雑を抑え、データをよりコンパクトでミニマルに表現できる場合もあります。特に厳密な区切りが不要なデータの提示や、構造の視覚的な強調を避けたい場合に適しています。

この記事では、C# プロジェクトで Spire.Doc for .NET を使用して、Word 表の罫線を追加、変更、削除する方法を紹介します。

Spire.Doc for .NET をインストールします

まず、Spire.Doc for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。

PM> Install-Package Spire.Doc

C# で Word 表に罫線を追加する

Word 表全体のセルに罫線を設定するには、各セルを繰り返し処理し、その視覚的な罫線プロパティを設定する必要があります。以下は詳細な手順です:

  • Document オブジェクトを作成します。
  • Document.LoadFromFile() メソッドを使用して Word 文書を読み込みます。
  • Document.Sections[0] を使用して文書の最初のセクションを取得します。
  • Section.Tables[0] を使用して、そのセクションの最初の表を取得します。
  • 表内のすべてのセルを繰り返し処理します。
  • TableCell.CellFormat.Borders.BorderTypeBorderStyle.Single に設定して、セルの罫線を単線にします。
  • TableCell.CellFormat.Borders.LineWidth を 1.5 に設定し、罫線の幅を 1.5 ポイントに指定します。
  • TableCell.CellFormat.Borders.ColorColor.Black に設定し、罫線の色を黒にします。
  • Document.SaveToFile() メソッドを使用して文書を保存します。
  • C#
using Spire.Doc;

namespace SpireDocDemo
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 新しいDocumentオブジェクトを作成
            Document doc = new Document();

            // ファイルから文書をロード
            doc.LoadFromFile("Sample.docx");

            // 文書の最初のセクションを取得
            Section section = doc.Sections[0];

            // そのセクションの最初のテーブルを取得
            Table table = (Table)section.Tables[0];

            // ループ内で使用するTableRowとTableCell変数を宣言
            TableRow tableRow;
            TableCell tableCell;

            // テーブル内のすべての行を反復処理
            for (int i = 0; i < table.Rows.Count; i++)
            {
                // 現在の行を取得
                tableRow = table.Rows[i];

                // 現在の行内のすべてのセルを反復処理
                for (int j = 0; j < tableRow.Cells.Count; j++)
                {
                    // 現在のセルを取得
                    tableCell = tableRow.Cells[j];

                    // 現在のセルの枠線スタイルを単一線に設定
                    tableCell.CellFormat.Borders.BorderType = Spire.Doc.Documents.BorderStyle.Single;
                }
            }

            // 変更された文書を新しいファイルとして保存
            doc.SaveToFile("output/Wordの表に罫線を追加.docx");

            // リソースを解放するために文書を閉じる
            doc.Close();
        }
    }
}

C#:Word 表の罫線を追加、変更、または削除する方法

C# で Word 表の罫線を変更する

Spire.Doc では、TableCell.CellFormat.Borders.BorderType(罫線のスタイル)、TableCell.CellFormat.Borders.LineWidth(罫線の幅)、TableCell.CellFormat.Borders.Color(罫線の色)など、さまざまな罫線プロパティを提供しています。これらのプロパティをカスタマイズして、目的の効果を実現できます。以下は詳細な手順です:

  • Document オブジェクトを作成します。
  • Document.LoadFromFile() メソッドを使用して Word 文書を読み込みます。
  • Document.Sections[0] を使用して文書の最初のセクションを取得します。
  • Section.Tables[0] を使用して、セクション内の最初の表を取得します。
  • 罫線スタイルを変更したいセルを繰り返し処理します。
  • セルの下罫線の色を TableCell.CellFormat.Borders.Bottom.ColorColor.PaleVioletRed に変更します。
  • セルの下罫線のスタイルを TableCell.CellFormat.Borders.Bottom.BorderTypeBorderStyle.DotDash に変更します。
  • セルの下罫線の幅を TableCell.CellFormat.Borders.Bottom.LineWidth で 2 ポイントに変更します。
  • Document.SaveToFile() メソッドを使用して文書を保存します。
  • C#
using Spire.Doc;
using Spire.Doc.Documents;
using System.Drawing;

namespace SpireDocDemo
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 新しいDocumentオブジェクトを作成
            Document doc = new Document();

            // ファイルから文書をロード
            doc.LoadFromFile("output/Wordの表に罫線を追加.docx");

            // 文書の最初のセクションを取得
            Section section = doc.Sections[0];

            // そのセクションの最初のテーブルを取得
            Table table = (Table)section.Tables[0];

            // ループ内で使用するTableRowを宣言
            TableRow tableRow;

            // テーブルのすべての行を反復処理
            for (int i = 1; i < table.Rows.Count - 1; i++)
            {
                tableRow = table.Rows[i];

                // 現在のセルの境界線の色を設定
                tableRow.Cells[1].CellFormat.Borders.Bottom.Color = Color.PaleVioletRed;

                // 現在のセルの境界線スタイルをDotDashに設定
                tableRow.Cells[1].CellFormat.Borders.Bottom.BorderType = BorderStyle.DotDash;

                // 境界線の幅を設定
                tableRow.Cells[1].CellFormat.Borders.Bottom.LineWidth = 2;
            }

            // 変更された文書を新しいファイルとして保存
            doc.SaveToFile("output/Wordの表の罫線を変更.docx", FileFormat.Docx2016);

            // 文書を閉じてリソースを解放
            doc.Close();
        }
    }
}

C#:Word 表の罫線を追加、変更、または削除する方法

C# で Word 表の罫線を削除する

Word 文書を扱う際、罫線スタイルは表全体に適用されるだけでなく、個々のセルにも拡張してカスタマイズすることが可能です。表のすべての罫線を完全に削除するには、まず表自体に対して罫線削除設定を適用し、その後、各セルを個別に処理して罫線スタイルをクリアすることが推奨されます。以下は詳細な手順です:

  • Document オブジェクトを作成します。
  • Document.LoadFromFile() メソッドを使用して Word 文書を読み込みます。
  • Section.Tables[0] を使用してセクション内の最初の表を取得します。
  • 表内のすべてのセルを繰り返し処理します。
  • Table.TableFormat.Borders.BorderType = BorderStyle.None を設定して、表全体の罫線を削除します。
  • TableCell.CellFormat.Borders.BorderType = BorderStyle.None を設定して、各セルの罫線を削除します。
  • Document.SaveToFile() メソッドを使用して Word 文書の変更を保存します。
  • C#
using Spire.Doc;
using Spire.Doc.Documents;

namespace SpireDocDemo
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 新しいDocumentオブジェクトを作成
            Document doc = new Document();

            // ファイルから文書をロード
            doc.LoadFromFile("output/Wordの表に罫線を追加.docx");

            // 文書の最初のセクションを取得
            Section section = doc.Sections[0];

            // そのセクションの最初のテーブルを取得
            Table table = (Table)section.Tables[0];

            // テーブルの枠線を削除
            table.TableFormat.Borders.BorderType = BorderStyle.None;

            // ループで使用するTableRowを宣言
            TableRow tableRow;

            // テーブル内のすべての行を反復処理
            for (int i = 0; i < table.Rows.Count; i++)
            {
                tableRow = table.Rows[i];
                for (int j = 0; j < tableRow.Cells.Count; j++)
                {
                    // セルのすべての枠線を削除
                    tableRow.Cells[j].CellFormat.Borders.BorderType = BorderStyle.None;
                }
            }

            // 変更された文書を新しいファイルとして保存
            doc.SaveToFile("output/Wordの表の罫線を削除.docx", FileFormat.Docx2016);

            // リソースを解放するために文書を閉じる
            doc.Close();
        }
    }
}

C#:Word 表の罫線を追加、変更、または削除する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Published in
Tagged under

Word 文書内の表には、財務データや調査結果、統計記録など、貴重な情報が含まれていることがよくあります。これらの表に含まれるデータを抽出することで、詳細なデータ分析やトレンドの特定、他のツールやデータベースとのシームレスな統合など、さまざまな目的に活用できるチャンスが広がります。この記事では、C# を使用して、Spire.Doc for .NET を用いて Word 文書から表を抽出する方法を紹介します。

Spire.Doc for .NET をインストールします

まず、Spire.Doc for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。

PM> Install-Package Spire.Doc

C# で Word 文書から表を抽出する

Spire.Doc for .NET では、Section.Tables プロパティを使用して、Word 文書のセクションに含まれる表にアクセスできます。このプロパティは、各セクション内の表を表す ITable オブジェクトのコレクションを返します。ITable オブジェクトを取得したら、各行やセルを繰り返し処理し、cell.Paragraphs[index].Text プロパティを使用して各セルのテキスト内容を取得します。表を抽出する手順は以下の通りです:

  • Document クラスのオブジェクトを作成し、Document.LoadFromFile() メソッドを使用して Word 文書を読み込みます。
  • 文書内のセクションを繰り返し処理し、Section.Tables プロパティを通じて各セクションの表コレクションを取得します。
  • 各セクションの表を繰り返し処理し、各表の内容を保存するための文字列オブジェクトを作成します。
  • 各表の行と各行内のセルを繰り返し処理し、TableCell.Paragraphs[index].Text プロパティを使用して各セルのテキストを取得し、そのテキストを文字列に追加します。
  • 各文字列をテキストファイルに保存します。
  • C#
using Spire.Doc;
using Spire.Doc.Collections;
using Spire.Doc.Interface;
using System.IO;
using System.Text;

namespace ExtractWordTable
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // Documentクラスのオブジェクトを作成
            Document doc = new Document();
            // Word文書をロード
            doc.LoadFromFile("Sample.docx");

            // 文書内のセクションを反復処理
            for (int sectionIndex = 0; sectionIndex < doc.Sections.Count; sectionIndex++)
            {
                // 現在のセクションを取得
                Section section = doc.Sections[sectionIndex];

                // セクションのテーブルコレクションを取得
                TableCollection tables = section.Tables;

                // セクション内のテーブルを反復処理
                for (int tableIndex = 0; tableIndex < tables.Count; tableIndex++)
                {
                    // 現在のテーブルを取得
                    ITable table = tables[tableIndex];

                    // テーブルデータを格納する文字列を初期化
                    string tableData = "";

                    // テーブル内の行を反復処理
                    for (int rowIndex = 0; rowIndex < table.Rows.Count; rowIndex++)
                    {
                        // 現在の行を取得
                        TableRow row = table.Rows[rowIndex];
                        // 行内のセルを反復処理
                        for (int cellIndex = 0; cellIndex < row.Cells.Count; cellIndex++)
                        {
                            // 現在のセルを取得
                            TableCell cell = table.Rows[rowIndex].Cells[cellIndex];

                            // セル内のテキストを取得
                            string cellText = "";
                            for (int paraIndex = 0; paraIndex < cell.Paragraphs.Count; paraIndex++)
                            {
                                cellText += (cell.Paragraphs[paraIndex].Text.Trim() + " ");
                            }

                            // テキストを文字列に追加
                            tableData += cellText.Trim();
                            if (cellIndex < table.Rows[rowIndex].Cells.Count - 1)
                            {
                                tableData += "\t";
                            }
                        }

                        // 改行を追加
                        tableData += "\n";
                    }

                    // テーブルデータをテキストファイルに保存
                    string filePath = Path.Combine("Tables", $"Section{sectionIndex + 1}_Table{tableIndex + 1}.txt");

                    File.WriteAllText(filePath, tableData, Encoding.UTF8);
                }
            }

            doc.Close();
        }
    }
}

C#:Word 文書から表を抽出する方法

C# で Word 文書から Excel ファイルに表を抽出する

抽出した表データをテキストファイルに保存するだけでなく、Spire.XLS for .NET ライブラリを使用して Excel ワークシートに直接書き込むこともできます。Spire.XLS for .NET を使用する前に、NuGet を介してインストールする必要があります:

Install-Package Spire.XLS

Word 文書から Excel ワークシートに表を抽出する手順は以下の通りです:

  • Document クラスのオブジェクトを作成し、Document.LoadFromFile() メソッドを使用して Word 文書を読み込みます。
  • Workbook クラスのオブジェクトを作成し、Workbook.Worksheets.Clear() メソッドを使用してデフォルトのワークシートをクリアします。
  • 文書内のセクションを繰り返し処理し、Section.Tables プロパティを通じて各セクションの表コレクションを取得します。
  • 各セクション内の表を繰り返し処理し、Workbook.Worksheets.Add() メソッドを使用して、各表ごとにワークシートをブックに追加します。
  • 各表の行と各行内のセルを繰り返し処理し、TableCell.Paragraphs[index].Text プロパティを使用して各セルのテキストを取得し、Worksheet.SetCellValue() メソッドを使用してワークシートにテキストを書き込みます。
  • Workbook.SaveToFile() メソッドを使用してワークブックを保存します。
  • C#
using Spire.Doc;
using Spire.Doc.Interface;
using Spire.Xls;

namespace ExtractWordTableToExcel
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // Documentクラスのオブジェクトを作成
            Document doc = new Document();
            // Word文書をロード
            doc.LoadFromFile("Sample.docx");

            // Workbookクラスのオブジェクトを作成
            Workbook wb = new Workbook();
            // デフォルトのワークシートを削除
            wb.Worksheets.Clear();

            // 文書内のセクションを反復処理
            for (int sectionIndex = 0; sectionIndex < doc.Sections.Count; sectionIndex++)
            {
                // 現在のセクションを取得
                Section section = doc.Sections[sectionIndex];
                // セクション内のテーブルを反復処理
                for (int tableIndex = 0; tableIndex < section.Tables.Count; tableIndex++)
                {
                    // 現在のテーブルを取得
                    ITable table = section.Tables[tableIndex];
                    // ワークブックにワークシートを追加
                    Worksheet ws = wb.Worksheets.Add($"Section{sectionIndex + 1}_Table{tableIndex + 1}");

                    // テーブル内の行を反復処理
                    for (int rowIndex = 0; rowIndex < table.Rows.Count; rowIndex++)
                    {
                        // 現在の行を取得
                        TableRow row = table.Rows[rowIndex];
                        // 行内のセルを反復処理
                        for (int cellIndex = 0; cellIndex < row.Cells.Count; cellIndex++)
                        {
                            // 現在のセルを取得
                            TableCell cell = row.Cells[cellIndex];
                            // セル内のテキストを取得
                            string cellText = "";
                            for (int paraIndex = 0; paraIndex < cell.Paragraphs.Count; paraIndex++)
                            {
                                cellText += (cell.Paragraphs[paraIndex].Text.Trim() + " ");
                            }
                            // セルのテキストをワークシートに書き込む
                            ws.SetCellValue(rowIndex + 1, cellIndex + 1, cellText);
                        }
                        // ワークシート内の列幅を自動調整
                        ws.Range.AutoFitColumns();
                    }
                }
            }

            // ワークブックをExcelファイルに保存
            wb.SaveToFile("Tables/Wordの表をExcelに抽出.xlsx", ExcelVersion.Version2016);
            doc.Close();
            wb.Dispose();
        }
    }
}

C#:Word 文書から表を抽出する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Published in
Tagged under

Word 文書内の表は、データを明確かつ構造的に整理するのに役立ちます。しかし、文書が複雑になるにつれて、表の構造を調整する必要が生じることがあります。複数の表を結合して包括的に表示したり、大きな表を分割して可読性を向上させたりすることで、データの提示が大幅に改善されます。この記事では、Spire.Doc for .NET を使用して、C# で Word 文書内の表を結合または分割する方法を説明します。

Spire.Doc for .NET をインストールします

まず、Spire.Doc for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。

PM> Install-Package Spire.Doc

C# で Word 文書内の表を結合する

Spire.Doc for .NET を使用すると、他の表からすべての行を対象の表にコピーし、その後他の表を削除することで、2つ以上の表を1つに結合できます。以下はその詳細手順です。

  • Document のインスタンスを作成します。
  • Document.LoadFromFile() メソッドを使用して、Word 文書を読み込みます。
  • Document.Sections[] プロパティを使用して、指定したセクションを取得します。
  • セクション内の2つの表を section.Tables[] プロパティで取得します。
  • 2番目の表のすべての行を Table.Rows[].Clone() メソッドを使用してコピーします。
  • 2番目の表の行を Table.Rows.Add() メソッドを使用して1番目の表に追加します。
  • Document.SaveToFile() メソッドを使用して、文書を保存します。
  • C#
using Spire.Doc;

namespace CombineTables
{
    class Program
    {
        static void Main(string[] args)
        {
            // ドキュメントのインスタンスを作成
            Document doc = new Document();

            // Word ドキュメントを読み込む
            doc.LoadFromFile("Sample.docx");

            // 最初のセクションを取得
            Section section = doc.Sections[0];

            // セクション内の最初と2番目のテーブルを取得
            Table table1 = section.Tables[0] as Table;
            Table table2 = section.Tables[1] as Table;

            // table2の行をtable1に追加
            for (int i = 0; i < table2.Rows.Count; i++)
            {
                table1.Rows.Add(table2.Rows[i].Clone());
            }

            // table2を削除
            section.Tables.Remove(table2);

            // 結果のドキュメントを保存
            doc.SaveToFile("Word文書内の表をマージ.docx", FileFormat.Docx);
            doc.Close();
        }
    }
}

C#:Word 文書内の表を結合または分割する方法

C# で Word 文書内の表を分割する

表を2つ以上に分割するには、新しい表を作成し、元の表から指定した行を新しい表にコピーし、元の表からそれらの行を削除します。以下はその詳細手順です。

  • Document のインスタンスを作成します。
  • Document.LoadFromFile() メソッドを使用して、Word 文書を読み込みます。
  • Document.Sections[] プロパティを使用して、指定したセクションを取得します。
  • セクション内の指定した表を section.Tables[] プロパティで取得します。
  • 表を分割する行のインデックスを指定します。
  • Table クラスの新しいインスタンスを作成します。
  • 元の表の指定した行を Table.Rows[].Clone() メソッドを使用してコピーします。
  • 指定した行を新しい表に Table.Rows.Add() メソッドを使用して追加します。
  • コピーした行を元の表から Table.Rows.RemoveAt() メソッドを使用して削除します。
  • 新しい表をセクションに Section.Tables.Add() メソッドを使用して追加します。
  • Document.SaveToFile() メソッドを使用して、文書を保存します。
  • C#
using Spire.Doc;

namespace SplitWordTable
{
    class Program
    {
        static void Main(string[] args)
        {
            // ドキュメントのインスタンスを作成
            Document doc = new Document();

            // Word ドキュメントを読み込む
            doc.LoadFromFile("Word文書内の表をマージ.docx");

            // 最初のセクションを取得
            Section section = doc.Sections[0];

            // セクション内の最初のテーブルを取得
            Table table = section.Tables[0] as Table;

            // テーブルを5行目から分割するように指定
            int splitIndex = 5;

            // 同じスタイルで新しいテーブルを作成
            Table newTable = table.Clone();
            newTable.Rows.Clear();

            // 5行目から最後の行までを新しいテーブルに追加
            for (int i = splitIndex; i < table.Rows.Count; i++)
            {
                newTable.Rows.Add(table.Rows[i].Clone());
            }

            // 元のテーブルから行を削除
            for (int i = table.Rows.Count - 1; i >= splitIndex; i--)
            {
                table.Rows.RemoveAt(i);
            }

            // 新しいテーブルをセクションに追加
            section.Tables.Add(newTable);

            // 結果のドキュメントを保存
            doc.SaveToFile("Word文書内の表を分割.docx", FileFormat.Docx);
            doc.Close();
        }
    }
}

C#:Word 文書内の表を結合または分割する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Published in
Tagged under

Word 文書の表で列の幅を設定することは、文書の可読性と美観を最適化するために重要です。適切な列幅は、長いテキスト行が可読性を妨げるのを防ぎ、特にテキストが密に詰まった表ではその効果が顕著です。Word 文書では、パーセントと固定値の2つのアプローチを提供しています。パーセント値を使用して列幅を設定することで、異なる画面サイズに応じて表を調整し、コンテンツが整然と配置され、読みやすさが向上します。一方、固定値を使用することで、表の構造を正確に制御でき、一貫性とプロフェッショナリズムが確保され、厳格なデータ配置要件や複雑なレイアウトが求められるデザインに適しています。

この記事では、C# プロジェクトで Spire.Doc for .NET を使用して、Word 文書の表の列幅をパーセントまたは固定値に基づいて設定する方法を紹介します。

Spire.Doc for .NET をインストールします

まず、Spire.Doc for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。

PM> Install-Package Spire.Doc

C# でパーセントに基づいて列の幅を設定する

Word の表で列幅をパーセント値で設定する際には、まず表の優先幅のタイプをパーセントに設定する必要があります。これは、Table.PreferredWidth = new PreferredWidth(WidthType.Percentage, (short)100) で行います。その後、各列を繰り返し処理し、必要に応じて同じまたは異なるパーセント値を設定します。以下は詳細な手順です。

  • Document オブジェクトを作成します。
  • Document.LoadFromFile() メソッドを使用して Word 文書をロードします。
  • Document.Sections[0] を使用して文書の最初のセクションを取得します。
  • Section.Tables[0] を使用してセクション内の最初の表を取得します。
  • for ループを使用して、表内のすべての行を繰り返し処理します。
  • TableRow.Cells[index].SetCellWidth(value, CellWidthType.Percentage) メソッドを使用して、異なる列のセルに対して列幅をパーセント値で設定します。
  • Document.SaveToFile() メソッドを使用して文書を保存します。
  • C#
using Spire.Doc;

namespace SpireDocDemo
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 新しいDocumentオブジェクトを作成
            Document doc = new Document();

            // "Sample.docx"という名前のドキュメントを読み込む
            doc.LoadFromFile("Sample.docx");

            // ドキュメントの最初のセクションを取得
            Section section = doc.Sections[0];

            // セクション内の最初のテーブルをTable型にキャスト
            Table table = (Table)section.Tables[0];

            // PreferredWidthオブジェクトを作成し、幅タイプをパーセンテージに設定し、幅の値を100%に設定
            PreferredWidth percentageWidth = new PreferredWidth(WidthType.Percentage, (short)100);

            // テーブルの推奨幅を上で作成したPreferredWidthオブジェクトに設定
            table.PreferredWidth = percentageWidth;

            // TableRow型の変数を定義
            TableRow tableRow;

            // テーブル内のすべての行を繰り返し処理
            for (int i = 0; i < table.Rows.Count; i++)
            {
                // 現在の行を取得
                tableRow = table.Rows[i];

                // 最初の列のセルの幅を34%に設定し、タイプをパーセンテージに設定
                tableRow.Cells[0].SetCellWidth(34, CellWidthType.Percentage);

                // 2番目の列のセルの幅を33%に設定し、タイプをパーセンテージに設定
                tableRow.Cells[1].SetCellWidth(33, CellWidthType.Percentage);

                // 3番目の列のセルの幅を33%に設定し、タイプをパーセンテージに設定
                tableRow.Cells[2].SetCellWidth(33, CellWidthType.Percentage);
            }

            // 修正したドキュメントを保存し、ファイル形式をDocx2016として指定
            doc.SaveToFile("output/パーセントで列幅を設定.docx", FileFormat.Docx2016);

            // ドキュメントを閉じる
            doc.Close();
        }
    }
}

C#:Word 文書の表で列の幅を設定する方法

C# で固定値に基づいて列幅を設定する

Word の表で列幅を固定値で設定する際には、まず表のレイアウトを固定に設定する必要があります。これは、Table.TableFormat.LayoutType = LayoutType.Fixed で行います。その後、各列を繰り返し処理し、必要に応じて同じまたは異なる固定値を設定します。以下は詳細な手順です。

  • Document オブジェクトを作成します。
  • Document.LoadFromFile() メソッドを使用して Word 文書をロードします。
  • Document.Sections[0] を使用して文書の最初のセクションを取得します。
  • Section.Tables[0] を使用してセクション内の最初の表を取得します。
  • for ループを使用して、表内のすべての行を繰り返し処理します。
  • TableRow.Cells[index].SetCellWidth(value, CellWidthType.Point) メソッドを使用して、異なる列のセルに対して列幅を固定値で設定します。ここで、value はポイントで指定したい幅に置き換えます。
  • Document.SaveToFile() メソッドを使用して文書を保存します。
  • C#
using Spire.Doc;

namespace SpireDocDemo
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 新しいDocumentオブジェクトを作成
            Document doc = new Document();

            // ドキュメントを読み込む
            doc.LoadFromFile("Sample.docx");

            // ドキュメントの最初のセクションを取得
            Section section = doc.Sections[0];

            // セクション内の最初のテーブルをTable型にキャスト
            Table table = (Table)section.Tables[0];

            // テーブルレイアウトタイプを固定に設定
            table.TableFormat.LayoutType = LayoutType.Fixed;

            // テーブルの自動サイズ変更モードを無効に設定
            table.TableFormat.IsAutoResized = false;

            // 左マージンを取得
            float leftMargin = section.PageSetup.Margins.Left;

            // 右マージンを取得
            float rightMargin = section.PageSetup.Margins.Right;

            // 左右のマージンを引いたページ幅を計算
            double pageWidth = section.PageSetup.PageSize.Width - leftMargin - rightMargin - 70;

            // TableRow型の変数を定義
            TableRow tableRow;

            // テーブル内のすべての行をループ
            for (int i = 0; i < table.Rows.Count; i++)
            {
                // 現在の行を取得
                tableRow = table.Rows[i];

                // 最初の列のセルの幅をページ幅の34%に設定
                tableRow.Cells[0].SetCellWidth((float)(pageWidth * 0.34), CellWidthType.Point);

                // 2番目の列のセルの幅をページ幅の33%に設定
                tableRow.Cells[1].SetCellWidth((float)(pageWidth * 0.33), CellWidthType.Point);

                // 3番目の列のセルの幅をページ幅の33%に設定
                tableRow.Cells[2].SetCellWidth((float)(pageWidth * 0.33), CellWidthType.Point);
            }

            // 修正したドキュメントを保存し、ファイル形式をDocx2016として指定
            doc.SaveToFile("output/固定値で列幅を設定.docx", FileFormat.Docx2016);

            // ドキュメントを閉じる
            doc.Close();
        }
    }
}

C#:Word 文書の表で列の幅を設定する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Published in
Tagged under

Word ドキュメントで表の行と列を追加・削除する機能は、情報の正確性、明確さ、関連性を維持するために非常に重要です。追加の行や列を加えることで、表の元の構造を変更し、データの変化に対応することができます。逆に、不必要な行や列を削除することで、ドキュメントを簡潔にし、読みやすくすることが可能です。本記事では、C# で Spire.Doc for .NET を使用して Word ドキュメント内の表の行と列を追加または削除する方法を紹介します。

Spire.Doc for .NET をインストールします

まず、Spire.Doc for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。

PM> Install-Package Spire.Doc

C# で Word ドキュメントの表に行を追加・挿入する

Spire.Doc for .NET を使用すると、Table.AddRow() または Table.Rows.Insert() メソッドを用いて、Word ドキュメント内の表の末尾に行を追加したり、特定の位置に行を挿入したりすることができます。以下に詳細な手順を示します。

  • Document オブジェクトを作成します。
  • Document.LoadFromFile() メソッドを使用して Word ドキュメントを読み込みます。
  • Document.Sections[] プロパティを使用して最初のセクションを取得します。
  • Section.Tables[] プロパティを使用して、セクション内の特定の表を取得します。
  • Table.Rows.Insert(int index, TableRow row) メソッドを使用して、表内の特定の位置に行を挿入します。
  • Table.AddRow() メソッドを使用して、表の末尾に行を追加します。
  • Document.SaveToFile() メソッドを使用して、結果を保存します。
  • C#
using Spire.Doc;

namespace AddRows
{
    class Program
    {
        static void Main(string[] args)
        {
            //Documentオブジェクトを作成
            Document doc = new Document();

            //Wordドキュメントを読み込む
            doc.LoadFromFile("Sample.docx");

            //最初のセクションを取得
            Section section = doc.Sections[0];

            //セクション内の最初の表を取得
            Table table = (Table)section.Tables[0];

            //表の3行目に行を挿入
            table.Rows.Insert(2, table.AddRow());

            //表の末尾に行を追加
            table.AddRow();

            //結果を保存
            doc.SaveToFile("output/表の行を追加.docx");
            doc.Close();
        }
    }
}

C#:Word 文書で表の行や列を追加・削除する方法

C# で Word ドキュメントの表に列を追加・挿入する

Spire.Doc for .NET には、Word ドキュメント内の表に列を直接追加・挿入するためのメソッドがありません。しかし、TableRow.AddCell() または TableRow.Cells.Insert() メソッドを用いて、各表行の特定の位置にセルを追加・挿入することで、この操作を実現できます。以下に詳細な手順を示します。

  • Document オブジェクトを作成します。
  • Document.LoadFromFile() メソッドを使用して Word ドキュメントを読み込みます。
  • Document.Sections[] プロパティを使用して最初のセクションを取得します。
  • Section.Tables[] プロパティを使用して、セクション内の特定の表を取得します。
  • ループ処理を行い、表内の各行を取得します。
  • TableRow.Cells.Insert() メソッドを使用して、各行の特定の位置に TableCell オブジェクトを挿入します。
  • TableRow.Cells[].SetCellWidth() メソッドを使用して、セルの幅を設定します。
  • TableRow.AddCell() メソッドを使用して、各行の末尾にセルを追加します。
  • Document.SaveToFile() メソッドを使用して、結果を保存します。
  • C#
using Spire.Doc;

namespace AddColumns
{
    class Program
    {
        static void Main(string[] args)
        {
            //Documentオブジェクトを作成
            Document doc = new Document();

            //Wordドキュメントを読み込む
            doc.LoadFromFile("Sample.docx");

            //最初のセクションを取得
            Section section = doc.Sections[0];

            //セクション内の最初の表を取得
            Table table = (Table)section.Tables[0];

            //表内の行をループ処理
            for (int i = 0; i < table.Rows.Count; i++)
            {
                //指定された行を取得
                TableRow row = table.Rows[i];

                //TableCellオブジェクトを作成
                TableCell cell = new TableCell(table.Document);

                //行の3番目のセルとして挿入
                row.Cells.Insert(2, cell);

                //セルの幅を設定
                row.Cells[2].SetCellWidth(40, CellWidthType.Point);

                //行の末尾にセルを追加
                row.AddCell();
            }

            //結果を保存
            doc.SaveToFile("output/表の列を追加.docx");
            doc.Close();
        }
    }
}

C#:Word 文書で表の行や列を追加・削除する方法

C# で Word ドキュメントの表から行と列を削除する

Word ドキュメント内の表から特定の行を削除するには、Table.Rows.RemoveAt() メソッドを直接使用できます。一方、特定の列を削除するには、各表行から対応するセルを TableRow.Cells.RemoveAt() メソッドで削除する必要があります。以下に詳細な手順を示します。

  • Document オブジェクトを作成します。
  • Document.LoadFromFile() メソッドを使用して Word ドキュメントを読み込みます。
  • Document.Sections[] プロパティを使用して最初のセクションを取得します。
  • Section.Tables[] プロパティを使用して、セクション内の特定の表を取得します。
  • Table.Rows.RemoveAt(int index) メソッドを使用して、表から特定の行を削除します。
  • ループ処理を行い、表内の各行を取得します。
  • TableRow.Cells.RemoveAt(int index) メソッドを使用して、各行から特定のセルを削除します。
  • Document.SaveToFile() メソッドを使用して、結果を保存します。
  • C#
using Spire.Doc;

namespace AddColumns
{
    class Program
    {
        static void Main(string[] args)
        {
            //Documentオブジェクトを作成
            Document doc = new Document();

            //Wordドキュメントを読み込む
            doc.LoadFromFile("Sample.docx");

            //最初のセクションを取得
            Section section = doc.Sections[0];

            //セクション内の最初の表を取得
            Table table = (Table)section.Tables[0];

            //4行目を削除
            table.Rows.RemoveAt(1);

            //表内の行をループ処理
            for (int i = 0; i < table.Rows.Count; i++)
            {
                //指定された行を取得
                TableRow row = table.Rows[i];

                //行から2番目のセルを削除
                row.Cells.RemoveAt(2);
            }

            //結果を保存
            doc.SaveToFile("output/行と列の削除.docx");
            doc.Close();
        }
    }
}

C#:Word 文書で表の行や列を追加・削除する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Published in
Tagged under

Word のテーブルには、テキストや画像など、さまざまな要素を含めることができます。場合によっては、画像をテーブルに挿入して情報を表示したり、他のドキュメントで使用するためにテーブルから画像を抽出したりすることがあります。この記事では、Spire.Doc for .NET を使用して、C# および VB.NET でプログラムによって Word でテーブルに画像を挿入または抽出する方法を示します。

Spire.Doc for .NET をインストールします

まず、Spire.Doc for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。

PM> Install-Package Spire.Doc

C# および VB.NET で Word のテーブルに画像を挿入する

Spire.Doc for .NET が提供する TableCell.Paragraphs[int].AppendPicture() メソッドは、特定のテーブルのセルに画像を追加することをサポートします。詳細な手順は次のとおりです。

  • Document のインスタンスを初期化します。
  • Document.LoadFromFile() メソッドを使用して Word ドキュメントをロードします。
  • Document.Sections [int] プロパティを使用して、特定のセクションをインデックスで取得します。
  • Section.Tables[int] プロパティを使用して、セクション内の特定のテーブルをインデックスで取得します。
  • Table.Row[int].Cells[int] プロパティを使用して、特定のセルにアクセスします。
  • TableCell.Paragraphs[int].AppendPicture() メソッドを使用して、セルの特定の段落に画像を追加します
  • DocPicture.WidthDocPicture.Height プロパティを使用して、画像の幅と高さを設定します。
  • Document.SaveToFile() メソッドを使用して結果ドキュメントを保存します。
  • C#
  • VB.NET
using Spire.Doc;
using Spire.Doc.Fields;
using System.Drawing;

namespace InsertImagesIntoTable
{
    class Program
    {
        static void Main(string[] args)
        {
            //Documentのインスタンスを初期化する
            Document doc = new Document();
            //Wordドキュメントをロードする
            doc.LoadFromFile("Table.docx");

            //最初のセクションを取得する
            Section section = doc.Sections[0];

            //セクションから最初のテーブルを取得する
            Table table = (Table)section.Tables[0];

            //テーブルの2行目の3番目のセルに画像を追加する
            TableCell cell = table.Rows[1].Cells[2];
            DocPicture picture = cell.Paragraphs[0].AppendPicture(Image.FromFile("doc.png"));
            //画像の幅と高さを設定する
            picture.Width = 100;
            picture.Height = 100;
            //テーブルの3行目の3番目のセルに画像を追加する
            cell = table.Rows[2].Cells[2];
            picture = cell.Paragraphs[0].AppendPicture(Image.FromFile("xls.png"));
            //画像の幅と高さを設定する
            picture.Width = 100;
            picture.Height = 100;

            //結果ドキュメントを保存する
            doc.SaveToFile("AddImageToTable.docx", FileFormat.Docx2013);
        }
    }
}
Imports Spire.Doc
Imports Spire.Doc.Fields

Namespace InsertImagesIntoTable
    Friend Class Program
        Private Shared Sub Main(ByVal args As String())
            'Documentのインスタンスを初期化する
            Dim doc As Document = New Document()
            'Wordドキュメントをロードする
            doc.LoadFromFile("Table.docx")

            ' 最初のセクションを取得する
            Dim section As Section = doc.Sections(0)

            'セクションから最初のテーブルを取得する
            Dim table As Table = CType(section.Tables(0), Table)

            'テーブルの2行目の3番目のセルに画像を追加する
            Dim cell As TableCell = table.Rows(1).Cells(2)
            Dim picture As DocPicture = cell.Paragraphs(0).AppendPicture(Image.FromFile("doc.png"))
            '画像の幅と高さを設定する
            picture.Width = 100
            picture.Height = 100
            'テーブルの3行目の3番目のセルに画像を追加する
            cell = table.Rows(2).Cells(2)
            picture = cell.Paragraphs(0).AppendPicture(Image.FromFile("xls.png"))
            '画像の幅と高さを設定する
            picture.Width = 100
            picture.Height = 100

            '結果ドキュメントを保存する
            doc.SaveToFile("AddImageToTable.docx", FileFormat.Docx2013)
        End Sub
    End Class
End Namespace

C#/VB.NET:Word のテーブルに画像を挿入または抽出する方法

C# および VB.NET で Word のテーブルから画像を抽出する

テーブルから画像を抽出するには、すべての行、各行のすべてのセル、各セルのすべての段落と各段落のすべてのサブオブジェクトをループします。次に、DocPicture タイプのオブジェクトを見つけ、DocPicture.Image.Save() メソッドを使用して指定したファイルパスに保存します。具体的な手順は次のとおりです。

  • Document のインスタンスを初期化します。
  • Document.LoadFromFile() メソッドを使用して Word ドキュメントをロードします。
  • Document.Sections [int] プロパティを使用して、特定のセクションをインデックスで取得します。
  • Section.Tables[int] プロパティを使用して、セクション内の特定のテーブルをインデックスで取得します。
  • テーブル内のすべての行をループします。
  • 各行のすべてのセルをループします。
  • 各セルのすべての段落をループします。
  • 各段落のすべてのサブオブジェクトをループします。
  • 現在のサブオブジェクトが DocPicture タイプであるかどうかを確認します。
  • 結果が true の場合は、オブジェクトのタイプを DocPicture に変換し、DocPicture.Image.Save() メソッドを使用して指定したファイルパスに画像を保存します。
  • C#
  • VB.NET
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System;
using System.Drawing.Imaging;

namespace ExtractImagesFromTable
{
    class Program
    {
        static void Main(string[] args)
        {
            //Documentクラスを初期化する
            Document doc = new Document();
            //Wordドキュメントをロードする
            doc.LoadFromFile("AddImageToTable.docx");

            //最初のセクションを取得する
            Section section = doc.Sections[0];

            //セクションから最初のテーブルを取得する
            Table table = (Table)section.Tables[0];

            int index = 0;
            string imageName = null;

            //テーブル内のすべての行をループする 
            for (int i = 0; i < table.Rows.Count; i++)
            {
                //各行のすべてのセルをループする
                for (int j = 0; j < table.Rows[i].Cells.Count; j++)
                {
                    //各セル内のすべての段落をループする
                    foreach (Paragraph para in table[i, j].Paragraphs)
                    {
                        //各段落内のすべてのサブオブジェクトをループする
                        foreach (DocumentObject obj in para.ChildObjects)
                        {
                            //現在のサブオブジェクトがDocPictureタイプであるかどうかを確認する
                            if (obj is DocPicture)
                            {
                                //指定したファイルパスに画像を保存する
                                imageName = string.Format(@"images\TableImage-{0}.png", index);
                                (obj as DocPicture).Image.Save(imageName, ImageFormat.Png);
                                index++;
                            }
                        }
                    }
                }
            }
        }
    }
}
Imports Spire.Doc
Imports Spire.Doc.Documents
Imports Spire.Doc.Fields
Imports System.Drawing.Imaging

Namespace ExtractImagesFromTable
    Friend Class Program
        Private Shared Sub Main(ByVal args As String())
            'Documentクラスを初期化する
            Dim doc As Document = New Document()
            ' Wordドキュメントをロードする
            doc.LoadFromFile("AddImageToTable.docx")

            'ドキュメントの最初のセクションを取得する
            Dim section As Section = doc.Sections(0)

            '最初のセクションから最初のテーブルを取得する
            Dim table As Table = CType(section.Tables(0), Table)

            Dim index = 0
            Dim imageName As String = Nothing

            'テーブル内のすべての行をループする 
            For i As Integer = 0 To table.Rows.Count - 1
                '各行のすべてのセルをループする
                For j As Integer = 0 To table.Rows(i).Cells.Count - 1
                    '各セル内のすべての段落をループする
                    For Each para As Paragraph In table(i, j).Paragraphs
                        '各段落内のすべてのサブオブジェクトをループする
                        For Each obj As DocumentObject In para.ChildObjects
                            '現在のサブオブジェクトがDocPictureタイプであるかどうかを確認する
                            If TypeOf obj Is DocPicture Then
                                '指定したファイルパスに画像を保存する
                                imageName = string.Format("images\TableImage-{0}.png", index)
                                TryCast(obj, DocPicture).Image.Save(imageName, ImageFormat.Png)
                                index += 1
                            End If
                        Next
                    Next
                Next
            Next
        End Sub
    End Class
End Namespace

C#/VB.NET:Word のテーブルに画像を挿入または抽出する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Published in
Tagged under

セルの結合は、2つ以上のセルを1つの大きなセルに結合することです。セルの分割は、1つのセルを2つ以上の小さなセルに分割することです。Microsoft Word で表を作成または編集する際には、データをよりよく表示するために、表のセルを結合または分割する必要があることがよくあります。この記事では、Spire.Doc for .NET を使用して、C# および VB.NET でプログラムによって Word で表のセルを結合または分割する方法を示します。

Spire.Doc for .NET をインストールします

まず、Spire.Doc for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。

PM> Install-Package Spire.Doc

C# と VB.NET を使用して Word で表のセルを結合する

Microsoft Word では、垂直または水平に隣接する2つ以上のセルを1つの大きなセルに結合できます。Spire.Doc では、Table.ApplyHorizontalMerge()Table.ApplyVerticalMerge() メソッドを使用してセルを結合できます。詳細な手順は次のとおりです。

  • Document クラスのインスタンスを初期化します。
  • Document.LoadFromFile() メソッドを使用して Word ドキュメントをロードします。
  • Document.Sections[int] プロパティを使用して、ドキュメント内の特定のセクションをインデックスで取得します。
  • Section.AddTable() メソッドを使用してセクションに表を追加します。
  • Table.ResetCells() メソッドを使用して、表の行数と列数を指定します。
  • Table.ApplyHorizontalMerge() メソッドを使用して、表内の特定のセルを水平方向に結合します。
  • Table.ApplyVerticalMerge() メソッドを使用して、表内の特定のセルを垂直方向に結合します。
  • 表にデータを追加します。
  • 表にスタイルを適用します。
  • Document.SaveToFile() メソッドを使用して結果ドキュメントを保存します。
  • C#
  • VB.NET
using Spire.Doc;
using Spire.Doc.Documents;

namespace MergeTableCells
{
    class Program
    {
        static void Main(string[] args)
        {
            //Documentインスタンスを作成する
            Document document = new Document();
            //Wordドキュメントをロードする
            document.LoadFromFile("sample.docx");

            //最初のセクションを取得する
            Section section = document.Sections[0];

            //セクションに4 x 4の表を追加する
            Table table = section.AddTable();
            table.ResetCells(4, 4);

            //最初の行のセル1、2、3、4を水平に結合する
            table.ApplyHorizontalMerge(0, 0, 3);
            //最初の列のセル3と4を垂直に結合する
            table.ApplyVerticalMerge(0, 2, 3);

            //表にデータを追加する
            for (int row = 0; row < table.Rows.Count; row++)
            {
                for (int col = 0; col < table.Rows[row].Cells.Count; col++)
                {
                    TableCell cell = table[row, col];
                    cell.CellFormat.VerticalAlignment = VerticalAlignment.Middle;
                    Paragraph paragraph = cell.AddParagraph();
                    paragraph.Format.HorizontalAlignment = HorizontalAlignment.Center;
                    paragraph.Text = "テキスト";
                }
            }

            //表にスタイルを適用する
            table.ApplyStyle(DefaultTableStyle.LightGridAccent1);

            //結果ドキュメントを保存する
            document.SaveToFile("MergeCells.docx", FileFormat.Docx2013);
        }
    }
}
Imports Spire.Doc
Imports Spire.Doc.Documents

Namespace MergeTableCells
    Friend Class Program
        Private Shared Sub Main(ByVal args As String())
            'Documentインスタンスを作成する
            Dim document As Document = New Document()
            'Wordドキュメントをロードする
            document.LoadFromFile("sample.docx")

            '最初のセクションを取得する
            Dim section As Section = document.Sections(0)

            'セクションに4 x 4の表を追加する
            Dim table As Table = section.AddTable()
            table.ResetCells(4, 4)

            '最初の行のセル1、2、3、4を水平に結合する
            table.ApplyHorizontalMerge(0, 0, 3)
            '最初の列のセル3と4を垂直に結合する 
            table.ApplyVerticalMerge(0, 2, 3)

            '表にデータを追加する
            For row As Integer = 0 To table.Rows.Count - 1
                For col As Integer = 0 To table.Rows(row).Cells.Count - 1
                    Dim cell As TableCell = table(row, col)
                    cell.CellFormat.VerticalAlignment = VerticalAlignment.Middle
                    Dim paragraph As Paragraph = cell.AddParagraph()
                    paragraph.Format.HorizontalAlignment = HorizontalAlignment.Center
                    paragraph.Text = "テキスト"
                Next
            Next

            '表にスタイルを適用する
            table.ApplyStyle(DefaultTableStyle.LightGridAccent1)

            '結果ドキュメントを保存する
            document.SaveToFile("MergeCells.docx", FileFormat.Docx2013)
        End Sub
    End Class
End Namespace

C#/VB.NET:Word で表のセルを結合または分割する方法

C# と VB.NET を使用して Word で表のセルを分割する

Spire.Doc for .NET が提供する TableCell.SplitCell() メソッドは、Word で表のセルを2つ以上のセルに分割することをサポートしています。詳細な手順は次のとおりです。

  • Document クラスのインスタンスを初期化します。
  • Document.LoadFromFile() メソッドを使用して Word ドキュメントをロードします。
  • Document.Sections[int] プロパティを使用して、ドキュメント内の特定のセクションをインデックスで取得します。
  • Section.Tables[int] プロパティを使用して、セクション内の特定の表をインデックスで取得します。
  • Table.Rows[int].Cells[int] プロパティで分割する表のセルを取得します。
  • TableCell.SplitCell() メソッドを使用して、セルを特定の数の列と行に分割します。
  • Document.SaveToFile() メソッドを使用して結果ドキュメントを保存します。
  • C#
  • VB.NET
using Spire.Doc;

namespace SplitTableCells
{
    class Program
    {
        static void Main(string[] args)
        {
            //Documentインスタンスを作成する
            Document document = new Document();
            //Wordドキュメントをロードする
            document.LoadFromFile("MergeCells.docx");

            //最初のセクションを取得する
            Section section = document.Sections[0];

            //セクションの最初の表を取得する
            Table table = section.Tables[0] as Table;

            //4行の4番目のセルを取得する
            TableCell cell1 = table.Rows[3].Cells[3];
            //セルを2列2行に分割する  
            cell1.SplitCell(2, 2);

            //結果ドキュメントを保存する
            document.SaveToFile("SplitCells.docx", FileFormat.Docx2013);
        }
    }
}
Imports Spire.Doc

Namespace SplitTableCells
    Friend Class Program
        Private Shared Sub Main(ByVal args As String())
            'Documentインスタンスを作成する
            Dim document As Document = New Document()
            'Wordドキュメントをロードする
            document.LoadFromFile("MergeCells.docx")

            '最初のセクションを取得する
            Dim section As Section = document.Sections(0)

            'セクションの最初の表を取得する
            Dim table As Table = TryCast(section.Tables(0), Table)

            '4行の4番目のセルを取得する
            Dim cell1 As TableCell = table.Rows(3).Cells(3)
            'セルを2列2行に分割する
            cell1.SplitCell(2, 2)

            '結果ドキュメントを保存する
            document.SaveToFile("SplitCells.docx", FileFormat.Docx2013)
        End Sub
    End Class
End Namespace

C#/VB.NET:Word で表のセルを結合または分割する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Published in
Tagged under

MS Word では、表によってデータを行と列に整理して表示することができるので、情報を理解しやすく、分析しやすくすることができます。この記事では、Spire.Doc for .NET を使って、Word ドキュメント内のデータで表を作成する方法を説明します。

Spire.Doc for .NET をインストールする

まず、Spire.Doc for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。

PM> Install-Package Spire.Doc

Word ドキュメントで表を作成する

以下は、Word ドキュメントで表を作成し、書式設定するために Spire.Doc for .NET が提供する主要なクラスとメソッドの一部です。

名前 説明
Table クラス Word ドキュメント内の表を表します。
TableRow クラス 表中の行を表します。
TableCell クラス 表中の特定のセルを表します。
Section.AddTbale() メソッド 指定されたセクションに新しい表を追加するために使用します。
Table.ResetCells() メソッド 行番号、列番号のリセットに使用します。
Table.Rows プロパティ 表の行を取得するために使用します。
TableRow.Height プロパティ 指定された行の高さを設定するために使用します。
TableRow.Cells プロパティ セル集を返します。
TableRow.RowFormat プロパティ 指定された行の書式を取得するために使用します。

詳細な手順は以下の通りです。

  • Document クラスのオブジェクトを作成し、それにセクションを追加します。
  • ヘッダー行とその他の行のデータを用意し、それぞれ一次元の文字列配列と二次元の文字列配列に格納します。
  • Section.AddTable() メソッドを使用して、セクションに表を追加します。
  • ヘッダー行にデータを挿入し、行の高さ、背景色、テキスト配置などの行の書式を設定します。
  • その他の行にデータを挿入し、書式を設定します。
  • Document.SaveToFile() メソッドを使用して、ドキュメントを保存します。
  • C#
  • VB.NET
using System;
using System.Drawing;
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;

namespace WordTable
{
    class Program
    {
        static void Main(string[] args)
        {
            //Documentクラスのオブジェクトを作成する
            Document doc = new Document();

            //セクションを追加する
            Section s = doc.AddSection();

            //表のデータを定義する
            String[] Header = { "日付", "商品名", "販売地域", "在庫量", "注文量" };
            String[][] data = {
                                  new String[]{ "08/07/2021", "カヤック", "米国", "24","16"},
                                  new String[]{ "08/07/2021", "潜水機", "米国", "5","3"},
                                  new String[]{ "08/07/2021", "制御システム", "チェコ共和国", "165","216"},
                                  new String[]{ "08/08/2021", "二段レギュレータ", "米国", "98","88"},
                                  new String[]{ "08/08/2021", "個人用潜水ソナー", "米国", "46","45"},
                                  new String[]{ "08/09/2021", "コンパスコンソール", "米国", "211","300"},
                                  new String[]{ "08/09/2021", "制御システム", "イギリス", "166","100"},
                                  new String[]{ "08/10/2021", "予備のエアダンサ", "イギリス", "47","43"},
                              };

            //表を追加する
            Table table = s.AddTable(true);
            table.ResetCells(data.Length + 1, Header.Length);

            //最初の行を表のヘッダーとして設定する
            TableRow FRow = table.Rows[0];
            FRow.IsHeader = true;

            //1列目の高さと色を設定する
            FRow.Height = 23;
            FRow.RowFormat.BackColor = Color.LightSeaGreen;
            for (int i = 0; i < Header.Length; i++)
            {
                //セルの配置を設定する 
                Paragraph p = FRow.Cells[i].AddParagraph();
                FRow.Cells[i].CellFormat.VerticalAlignment = VerticalAlignment.Middle;
                p.Format.HorizontalAlignment = HorizontalAlignment.Center;

                //データのフォーマットを設定する
                TextRange TR = p.AppendText(Header[i]);
                TR.CharacterFormat.FontName = "Calibri";
                TR.CharacterFormat.FontSize = 12;
                TR.CharacterFormat.Bold = true;
            }

            //他の行にデータを追加し、セルの書式を設定する
            for (int r = 0; r < data.Length; r++)
            {
                TableRow DataRow = table.Rows[r + 1];
                DataRow.Height = 20;
                for (int c = 0; c < data[r].Length; c++)
                {
                    DataRow.Cells[c].CellFormat.VerticalAlignment = VerticalAlignment.Middle;
                    Paragraph p2 = DataRow.Cells[c].AddParagraph();
                    TextRange TR2 = p2.AppendText(data[r][c]);
                    p2.Format.HorizontalAlignment = HorizontalAlignment.Center;

                    //データの書式を設定する
                    TR2.CharacterFormat.FontName = "Calibri";
                    TR2.CharacterFormat.FontSize = 11;
                }
            }

            //ドキュメントを保存する
            doc.SaveToFile("表の追加.docx", FileFormat.Docx2013);
        }
    }
}
Imports System.Drawing
Imports Spire.Doc
Imports Spire.Doc.Documents
Imports Spire.Doc.Fields

Namespace WordTable
    Class Program
        Shared Sub Main(ByVal args() As String)
            'Documentクラスのオブジェクトを作成する
            Dim doc As Document = New Document()

            'セクションを追加する
            Dim s As Section = doc.AddSection()

            '表のデータを定義する
            Dim Header() As String = {"日付", "商品名", "販売地域", "在庫量", "注文量"}

            Dim data()() As String = {New String() {"08/07/2021", "カヤック", "米国", "24", "16"}
,
                                  New String()
                                  {
                                  	 "08/07/2021", "潜水機", "米国", "5","3"
                                  }
,
                                  New String()
                                  {
                                  	 "08/07/2021", "制御システム", "チェコ共和国", "165","216"
                                  }
,
                                  New String()
                                  {
                                  	 "08/08/2021", "二段レギュレータ", "米国", "98","88"
                                  }
,
                                  New String()
                                  {
                                  	 "08/08/2021", "個人用潜水ソナー", "米国", "46","45"
                                  }
,
                                  New String()
                                  {
                                  	 "08/09/2021", "コンパスコンソール", "米国", "211","300"
                                  }
,
                                  New String()
                                  {
                                  	 "08/09/2021", "制御システム", "イギリス", "166","100"
                                  }
,
                                  New String()
                                  {
                                  	 "08/10/2021", "予備のエアダンサ", "イギリス", "47","43"
                                  }
,
                              }

 
            '表を追加する
            Dim table As Table = s.AddTable(True)
            table.ResetCells(data.Length + 1, Header.Length)

            '最初の行を表のヘッダーとして設定する
            Dim FRow As TableRow = table.Rows(0)
            FRow.IsHeader = True

            '1列目の高さと色を設定する
            FRow.Height = 23
            FRow.RowFormat.BackColor = Color.LightSeaGreen
            Dim i As Integer
            For i = 0 To Header.Length - 1 Step i + 1
                'セルの配置を設定する 
                Dim p As Paragraph = FRow.Cells(i).AddParagraph()
                FRow.Cells(i).CellFormat.VerticalAlignment = VerticalAlignment.Middle
                p.Format.HorizontalAlignment = HorizontalAlignment.Center

                'データのフォーマットを設定する
                Dim TR As TextRange = p.AppendText(Header(i))
                TR.CharacterFormat.FontName = "Yu Gothic UI"
                TR.CharacterFormat.FontSize = 12
                TR.CharacterFormat.Bold = True
            Next

            '他の行にデータを追加し、セルの書式を設定する
            Dim r As Integer
            For r = 0 To data.Length - 1 Step r + 1
                Dim DataRow As TableRow = table.Rows(r + 1)
                DataRow.Height = 20
                Dim c As Integer
                For c = 0 To data(r).Length - 1 Step c + 1
                    DataRow.Cells(c).CellFormat.VerticalAlignment = VerticalAlignment.Middle
                    Dim p2 As Paragraph = DataRow.Cells(c).AddParagraph()
                    Dim TR2 As TextRange = p2.AppendText(data(r)(c))
                    p2.Format.HorizontalAlignment = HorizontalAlignment.Center

                    'データの書式を設定する
                    TR2.CharacterFormat.FontName = "Yu Mincho"
                    TR2.CharacterFormat.FontSize = 11
                Next
            Next

            'ドキュメントを保存する
            doc.SaveToFile("表の追加.docx", FileFormat.Docx2013)
        End Sub
    End Class
End Namespace

C#/VB.NET:Word ドキュメントに表を作成する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Published in
Tagged under