指定されたEXCELファイル内の全画像を指定されたフォルダに保存します。
但し、コピペなどの同一画像は1画像として保存されます。
※NPOIを利用しています。実行するためにはNPOIのインストールが必要です。
※EXCEL内の画像と同じ形式で保存することを想定して作成しましたが、なぜかPNG形式でしかEXCELから取得できません。その為、画像は全てPNGで保存されます。
呼び出し
public bool saveExcelImageAll(string excelFile,string savePath)
パラメータ
string | excelFile | EXCELファイルのフルパス |
string | savePath | 保存先フォルダ |
プログラミング
言語: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;