|
分類:[C#]
はじめて質問させていただきます。
Microsoft Visual C# 2010で、Excelの選択範囲をjpgで保存するプログラムを作成中です。 下記のようにPG中なのですが、★ココの部分でdataがnullとなり、その下の行でSystem.NullReferenceExceptionが発生してしまいます。 range.CopyPictureでコピーされたクリップボードから、Clipboard.GetDataObjectを使用して取得できないのでしょうか? C#は初心者のため、困っています。 どうか、ご教示ください。よろしくお願い致します。
Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application(); // エクセルを非表示 ExcelApp.Visible = false;
// Excelファイル名 string excelName = "D:\\temp\\test.xlsx";
// Excelファイルのオープン Microsoft.Office.Interop.Excel.Workbook WorkBook = ExcelApp.Workbooks.Open(excelName);
// 1シート目の選択 Microsoft.Office.Interop.Excel.Worksheet sheet = WorkBook.Sheets[1]; sheet.Select();
// jpg保存したい範囲を選択し、クリップボードにコピー Microsoft.Office.Interop.Excel.Range range = sheet.Range[sheet.Cells[3, 1], sheet.Cells[9, 2]]; range.CopyPicture(Microsoft.Office.Interop.Excel.XlPictureAppearance.xlScreen, Microsoft.Office.Interop.Excel.XlCopyPictureFormat.xlBitmap);
// クリップボードに格納された画像の取得 IDataObject data = Clipboard.GetDataObject(); // ★ココ if (data.GetDataPresent(DataFormats.Bitmap)) { Bitmap bmp = (Bitmap)data.GetData(DataFormats.Bitmap); // 取得した画像の保存 bmp.Save(@"d:\temp\ttt.jpg", ImageFormat.Jpeg); }
|