C#でワークシートを画像に変換する方法

C#でワークシートを画像に変換する方法

エクセルの単一ワークシートを画像形式(例:PNG、JPEG)にエクスポートすることは、プレビューを生成したり、チャートをエクスポートしたり、スプレッドシートの内容の読み取り専用の視覚表現を共有したりする際に便利です。このガイドでは、Aspose.Cells for .NETを使用して、エクセルワークブックから1つのワークシートを画像に変換する方法を示します。

使用例

  • 特定のワークシートのプレビューを生成する
  • メールやドキュメント用にフォーマットされたレポートをエクスポートする
  • ウェブページやPDFに単一のシートを埋め込む

ステップバイステップガイド

ステップ 1: Aspose.Cells for .NETをインストールする

dotnet add package Aspose.Cells

ステップ 2: エクセルファイルをロードする

Workbook workbook = new Workbook("SalesData.xlsx");
Worksheet sheet = workbook.Worksheets["Q1 Report"]; // 特定のワークシートにアクセス

ステップ 3: 画像レンダリングオプションを定義する

ImageOrPrintOptions options = new ImageOrPrintOptions
{
    ImageType = ImageType.Png,
    OnePagePerSheet = true,
    HorizontalResolution = 200,
    VerticalResolution = 200,
    PrintingPageType = PrintingPageType.Default
};

ステップ 4: SheetRenderオブジェクトを作成する

SheetRender renderer = new SheetRender(sheet, options);

ステップ 5: 各ページを画像にレンダリングする

for (int pageIndex = 0; pageIndex < renderer.PageCount; pageIndex++)
{
    string imageName = $"worksheet_q1_page_{pageIndex + 1}.png";
    renderer.ToImage(pageIndex, imageName);
}

ステップ 6: 画像を保存する

このコードは、ワークシート内の印刷可能なページごとに1つの画像を自動的に保存します。

ステップ 7: オプションの拡張

追加のレイアウト設定を適用できます:

// 出力画像にグリッド線を表示
options.ShowGridLines = true;

// すべてのコンテンツを1ページに収める
options.AllColumnsInOnePagePerSheet = true;

完全な例コード

using System;
using Aspose.Cells;

class Program
{
    static void Main()
    {
        // エクセルワークブックをロードする
        Workbook workbook = new Workbook("SalesData.xlsx");

        // 特定のワークシートにアクセス
        Worksheet sheet = workbook.Worksheets["Q1 Report"];

        // 画像レンダリングオプションを定義する
        ImageOrPrintOptions options = new ImageOrPrintOptions
        {
            ImageType = ImageType.Png,
            OnePagePerSheet = true,
            HorizontalResolution = 200,
            VerticalResolution = 200,
            PrintingPageType = PrintingPageType.Default
        };

        // 必要に応じてグリッド線を有効にする
        options.ShowGridLines = true;

        // シートを画像にレンダリングする
        SheetRender renderer = new SheetRender(sheet, options);

        for (int pageIndex = 0; pageIndex < renderer.PageCount; pageIndex++)
        {
            string imageName = $"worksheet_q1_page_{pageIndex + 1}.png";
            renderer.ToImage(pageIndex, imageName);
            Console.WriteLine($"保存しました: {imageName}");
        }

        Console.WriteLine("ワークシートが画像に正常にレンダリングされました。");
    }
}

一般的なシナリオとトラブルシューティング

問題解決策
切り取られたコンテンツAllColumnsInOnePagePerSheet = trueを使用
出力が低品質画像解像度を上げる
グリッド線が欠けているShowGridLines = trueを設定
 日本語