チュートリアル

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

チュートリアル».NET»Spire.XLS for .NET»セル»C#:Excel で行、列、セルを書式付きでコピーする方法
2025-01-16

C#:Excel で行、列、セルを書式付きでコピーする方法

C# で Excel を操作する際、行、列、セルをコピーするのは一見簡単そうに思えますが、元の書式を維持するとなると一筋縄ではいかないことがあります。レポート用のデータ整理やプレゼンテーション作成、またはスプレッドシートを見栄えよく整える場合でも、元の見た目を維持することは重要です。本記事では、Spire.XLS for .NET を使用して、C# で Excel の行、列、セルを元の書式を保持したままコピーする方法を解説します。

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

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

PM> Install-Package Spire.XLS

C# で Excel の行を書式付きでコピーする

Excel で行をコピーする際に書式を維持するには、Worksheet.CopyRow(CellRange sourceRow, Worksheet destSheet, int destRowIndex, CopyRangeOptions copyOptions) メソッドを使用すると効率的です。このメソッドを使用すると、同じワークシート内または異なるワークシート間で行を正確にコピーできます。また、CopyRangeOptions パラメーターを使用して、すべての書式、条件付き書式、データ検証、スタイル、または数式の値のみをコピーするなど、コピー動作を制御することも可能です。

以下は、Spire.XLS を使用して異なるワークシート間で書式付きで行をコピーする手順です。

  • Workbook クラスのオブジェクトを作成します。
  • Workbook.LoadFromFile() メソッドを使用して Excel ファイルを読み込みます。
  • Workbook.Worksheets[index] プロパティを使用して、ソースと宛先のワークシートを取得します。
  • Worksheet.Rows[index] プロパティを使用してコピーしたい行を取得します。
  • Worksheet.CopyRow(CellRange sourceRow, Worksheet destSheet, int destRowIndex, CopyRangeOptions copyOptions) メソッドを使用して、ソースワークシートから宛先ワークシートに行とその書式をコピーします。
  • ソース行のセル幅を宛先行の対応するセルにコピーします。
  • Workbook.SaveToFile() メソッドを使用してブックをファイルに保存します。
  • C#
using Spire.Xls;

namespace CopyRows
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // Workbookオブジェクトを作成します
            Workbook workbook = new Workbook();
            // Excelファイルを読み込みます
            workbook.LoadFromFile("Sample.xlsx");

            // ソースワークシートを取得します
            Worksheet sheet1 = workbook.Worksheets[0];

            // 新しいワークシートを作成します
            Worksheet sheet2 = workbook.Worksheets.Add("Sheet2");

            // コピーしたい行を取得します
            CellRange row = sheet1.Rows[0];

            // ソースワークシートの行を宛先ワークシートの1行目にコピーします
            sheet1.CopyRow(row, sheet2, 1, CopyRangeOptions.All);

            int columns = sheet1.Columns.Length;

            // ソース行内のセルの列幅を宛先行内の対応するセルにコピーします
            for (int i = 0; i < columns; i++)
            {
                double columnWidth = row.Columns[i].ColumnWidth;
                sheet2.Rows[0].Columns[i].ColumnWidth = columnWidth;
            }

            // ワークブックをファイルに保存します
            workbook.SaveToFile("output/行のコピー.xlsx");
            workbook.Dispose();
        }
    }
}

Spire.XLSを使用した書式付き行のコピー

C# で Excel の列を書式付きでコピーする

同様に、列を書式付きでコピーするには、Worksheet.CopyColumn(CellRange sourceColumn, Worksheet destSheet, int destColIndex, CopyRangeOptions copyOptions) メソッドを使用できます。詳細な手順は以下の通りです。

  • Workbook クラスのオブジェクトを作成します。
  • Workbook.LoadFromFile() メソッドを使用して Excel ファイルを読み込みます。
  • Workbook.Worksheets[index] プロパティを使用して、ソースと宛先のワークシートを取得します。
  • Worksheet.Columns[index] プロパティを使用してコピーしたい列を取得します。
  • Worksheet.CopyColumn(CellRange sourceColumn, Worksheet destSheet, int destColIndex, CopyRangeOptions copyOptions) メソッドを使用して、ソースワークシートから宛先ワークシートに列とその書式をコピーします。
  • ソース列のセルの行の高さを宛先列の対応するセルにコピーします。
  • Workbook.SaveToFile() メソッドを使用してブックをファイルに保存します。
  • C#
using Spire.Xls;

namespace CopyColumns
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // Workbookオブジェクトを作成します
            Workbook workbook = new Workbook();
            // Excelファイルを読み込みます
            workbook.LoadFromFile("Sample.xlsx");

            // ソースワークシートを取得します
            Worksheet sheet1 = workbook.Worksheets[0];

            // 宛先ワークシートを取得します
            Worksheet sheet2 = workbook.Worksheets.Add("Sheet2");

            // コピーしたい列を取得します
            CellRange column = sheet1.Columns[0];

            // ソースワークシートの列を宛先ワークシートの1列目にコピーします
            sheet1.CopyColumn(column, sheet2, 1, CopyRangeOptions.All);

            int rows = column.Rows.Length;

            // ソース列内のセルの行高さを宛先列内の対応するセルにコピーします
            for (int i = 0; i < rows; i++)
            {
                double rowHeight = column.Rows[i].RowHeight;
                sheet2.Columns[0].Rows[i].RowHeight = rowHeight;
            }

            // ワークブックをファイルに保存します
            workbook.SaveToFile("output/列のコピー.xlsx", ExcelVersion.Version2016);
            workbook.Dispose();
        }
    }
}

.NETを使った書式付き列のコピー

C# で Excel のセルを書式付きでコピーする

行や列のコピーに加え、Spire.XLS for .NETを使用すると、CellRange.Copy(CellRange destRange, CopyRangeOptions copyOptions) メソッドを利用してセル範囲を書式付きでコピーすることも可能です。手順は以下の通りです。

  • Workbook クラスのオブジェクトを作成します。
  • Workbook.LoadFromFile() メソッドを使用して Excel ファイルを読み込みます。
  • Workbook.Worksheets[index] プロパティを使用して、ソースと宛先のワークシートを取得します。
  • Worksheet.Range[] プロパティを使用して、ソースと宛先のセル範囲を取得します。
  • CellRange.Copy(CellRange destRange, CopyRangeOptions copyOptions) メソッドを使用して、ソースワークシートのセル範囲とその書式を宛先セル範囲にコピーします。
  • ソースセル範囲の行の高さと列の幅を宛先セル範囲にコピーします。
  • Workbook.SaveToFile() メソッドを使用してブックをファイルに保存します。
  • C#
using Spire.Xls;

namespace CopyCells
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // Workbookオブジェクトを作成します
            Workbook workbook = new Workbook();
            // Excelファイルを読み込みます
            workbook.LoadFromFile("Sample.xlsx");

            // ソースワークシートを取得します
            Worksheet sheet1 = workbook.Worksheets[0];
            // 宛先ワークシートを取得します
            Worksheet sheet2 = workbook.Worksheets.Add("Sheet2");

            // ソースセル範囲を取得します
            CellRange range1 = sheet1.Range["A1:D6"];
            // 宛先セル範囲を取得します
            CellRange range2 = sheet2.Range["A1:D6"];

            // ソースワークシートのセル範囲を宛先ワークシートのセル範囲にコピーします
            range1.Copy(range2, CopyRangeOptions.All);

            // ソースセル範囲の行高さと列幅を宛先セル範囲にコピーします
            for (int i = 0; i < range1.Rows.Length; i++)
            {
                CellRange row = range1.Rows[i];
                for (int j = 0; j < row.Columns.Length; j++)
                {
                    CellRange column = row.Columns[j];
                    range2.Rows[i].Columns[j].ColumnWidth = column.ColumnWidth;
                    range2.Rows[i].RowHeight = row.RowHeight;
                }
            }

            // ワークブックをファイルに保存します
            workbook.SaveToFile("output/セルのコピー.xlsx", ExcelVersion.Version2016);
            workbook.Dispose();
        }
    }
}

C#を使った書式付きセルのコピー

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

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

Read 23 times