C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: エクセル内の画像をjpegで保存


(過去ログ 177 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■101691 / inTopicNo.1)  エクセル内の画像をjpegで保存
  
□投稿者/ たか (4回)-(2023/04/02(Sun) 14:42:37)

分類:[C#] 

エクセル内の A1:D3の画像をjpegで保存したいのですが
調べながらコードを書いたのですがうまくいかないので
教えて下さい

c#コンソールアプリ

using System;
using System.IO;
using Microsoft.Office.Interop.Excel;

namespace ExcelToImage
{
    class Program
    {
        static void Main(string[] args)
        {
            Application excelApp = new Application();
            excelApp.Visible = false;

            Workbook excelBook = excelApp.Workbooks.Open(@"c:\data\book1.xlsx");
            Worksheet excelSheet = (Worksheet)excelBook.Worksheets[1];

            Range rangeToCopy = excelSheet.Range["A1:D3"];


            rangeToCopy.CopyPicture(XlPictureAppearance.xlScreen, XlCopyPictureFormat.xlBitmap);

            var image = System.Windows.Forms.Clipboard.GetImage();


            string pathToSave = @"c:\data\画像";
            if (!Directory.Exists(pathToSave))
            {
                Directory.CreateDirectory(pathToSave);
            }
            string fileName = Path.Combine(pathToSave, "image.png");
            image.Save(fileName);

            excelBook.Close(false);
            excelApp.Quit();
        }
    }
}
 

引用返信 編集キー/
■101692 / inTopicNo.2)  Re[1]: エクセル内の画像をjpegで保存
□投稿者/ radian (117回)-(2023/04/03(Mon) 09:24:00)
MainをSTAスレッドにしてみてください。

    [STAThread]
    public static void Main(string[] args)

引用返信 編集キー/
■101695 / inTopicNo.3)  Re[2]: エクセル内の画像をjpegで保存
□投稿者/ たか (5回)-(2023/04/03(Mon) 12:23:16)
No101692 (radian さん) に返信
> MainをSTAスレッドにしてみてください。
> 
>     [STAThread]
>     public static void Main(string[] args)

ありがとうございます
入力した結果

  Range rangeToCopy = excelSheet.Range["A1:D3"];

       のRange 部分に赤波線が付いてCS0104コンパイルエラーが出ますが
       どう対処したらよろしいでしょうか

引用返信 編集キー/
■101697 / inTopicNo.4)  Re[3]: エクセル内の画像をjpegで保存
□投稿者/ radian (118回)-(2023/04/03(Mon) 13:16:12)
2023/04/03(Mon) 13:17:59 編集(投稿者)

>   Range rangeToCopy = excelSheet.Range["A1:D3"];
>
> のRange 部分に赤波線が付いてCS0104コンパイルエラーが出ますが
> どう対処したらよろしいでしょうか

・Range rangeToCopyを var rangeToCopy にしてみる(暗黙の型指定)
・Rangeの型名を名前空間込みの名称で書く

どちらかで行けるとおもいます。
引用返信 編集キー/
■101725 / inTopicNo.5)  Re[4]: エクセル内の画像をjpegで保存
□投稿者/ たか (6回)-(2023/04/10(Mon) 14:54:04)
No101697 (radian さん) に返信
> 2023/04/03(Mon) 13:17:59 編集(投稿者)
> 
ありがとうございます。行けました
もう1点だけ教えて頂けますでしょうか

var image = System.Windows.Forms.Clipboard.GetImage();

この行のGetImageに赤波線 CS106コンパイルエラーとでてしまいますが
どのようにしたらよろしいでしょうか

引用返信 編集キー/
■101726 / inTopicNo.6)  Re[5]: エクセル内の画像をjpegで保存
□投稿者/ 伝説のカレー (86回)-(2023/04/10(Mon) 15:17:21)
No101725 (たか さん) に返信

まずはエラーメッセージを読みましょう
読んでわからなかったらググりましょう
ググってわからなかったらエラーメッセージを省略せずにここに書きましょう
引用返信 編集キー/
■101727 / inTopicNo.7)  Re[6]: エクセル内の画像をjpegで保存
□投稿者/ 伝説のカレー (87回)-(2023/04/10(Mon) 15:25:37)
いまはグーグルで検索するよりもAIに聞いてしまった方が早いのかも

ChatGPT3.5ではこんな回答でした

> このエラーは、System.Windows.Forms名前空間にClipboardクラスが存在しないために発生する可能性があります。または、適切なアセンブリが参照されていない可能性があります。
>
> 以下の手順を確認して、問題を解決できるかどうかを確認してください。
>
> 必要な名前空間が正しくインポートされていることを確認してください。たとえば、以下のようにします。
> using System.Windows.Forms;
> 参照が正しく設定されていることを確認してください。プロジェクトにSystem.Windows.Formsアセンブリへの参照が追加されていることを確認します。
>
> それでもエラーが解決しない場合は、Visual Studioのツールメニューから「NuGetパッケージマネージャー」を選択し、System.Windows.Formsアセンブリをインストールしてください。
>
> 以上の手順を確認しても問題が解決しない場合は、より詳細な情報を提供する必要があります。可能であれば、エラーメッセージの完全なコピーを共有してください。

AIに聞くことにも「ググる」のような可愛らしい名前が欲しいですよね、ちゃとる?
引用返信 編集キー/
■101728 / inTopicNo.8)  Re[5]: エクセル内の画像をjpegで保存
□投稿者/ radian (120回)-(2023/04/11(Tue) 09:21:50)
2023/04/11(Tue) 14:02:02 編集(投稿者)

別の質問を連続してするのはやめましょう。
あと、エラーコード等を検索して必要最低限の事は自分で調べてください。
コンパイルエラーすら自力で解消出来ないようでは、
この先コンパイルエラーが出る度に質問する事になります。
ある程度調べた上で、どうしても判らなかった事があれば
改めて質問を立ててください。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -