C# EXCEL内の全画像保存処理

C#サンプルコードプログラミング

指定されたEXCELファイル内の全画像を指定されたフォルダに保存します。

但し、コピペなどの同一画像は1画像として保存されます。

NPOIを利用しています。実行するためにはNPOIのインストールが必要です。

※EXCEL内の画像と同じ形式で保存することを想定して作成しましたが、なぜかPNG形式でしかEXCELから取得できません。その為、画像は全てPNGで保存されます。

呼び出し

public bool saveExcelImageAll(string excelFile,string savePath)

パラメータ

stringexcelFileEXCELファイルのフルパス
stringsavePath保存先フォルダ

プログラミング

言語:C#

メソッド

/// <summary>
/// EXCEL内の全画像を保存する
/// </summary>
/// <param name="excelFile">EXCELファイルのフルパス</param>
/// <param name="savePath">保存先フォルダ</param>
/// <returns>True:成功 False:失敗</returns>
public bool saveExcelImageAll(string excelFile,string savePath) {

    try
    {

        //ブックを開く
        var book = WorkbookFactory.Create(excelFile);

        //ブック内の画像分ループ
        int i = 1;
        foreach (IPictureData p in book.GetAllPictures())
        {

            //画像の保存先を設定する
            string extension = p.SuggestFileExtension().ToString();
            String saveexcelFile = Path.Combine(savePath, i.ToString("00") + "." + extension);

            //画像データを保存する
            System.IO.File.WriteAllBytes(saveexcelFile, p.Data);

            i++;
        }
    }
    catch (Exception)
    {
        // 失敗
        return false;
    }

    // 成功
    return true;
}

使用例

// EXCELファイルのフルパス
string excelFile = @"d:\sample.xlsx";

// 保存先フォルダ
string savePath = @"d:\画像";

// EXCEL内の全画像を保存する
bool ret = saveExcelImageAll(excelFile, savePath);
if (!ret)
{
    // 失敗なら警告を表示する
    string sMsg = "EXCELの画像保存に失敗しました。";
    MessageBox.Show(sMsg, "警告", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

using

using System.IO;
using NPOI.SS.UserModel;

コメント

タイトルとURLをコピーしました