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

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

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

Re[4]: Excelのセルに画像を貼り付けたい


(過去ログ 70 を表示中)

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

■40776 / inTopicNo.1)  Excelのセルに画像を貼り付けたい
  
□投稿者/ 陽昇 (1回)-(2009/09/02(Wed) 18:33:54)

分類:[C#] 

はじめまして。C#,.NETともに初心者です。

【OS】 Win XP SP3
【開発環境】VC# 2008 Express Edition
Excel 2002 SP3
参照設定:Microsoft Excel 10.0 ObjectLibrary

上記環境で、バーコードを作成及び印刷するアプリを作成しています。

バーコードの作成は出来たのですが、印刷が出来ずに悩んでいます。
Express ですので、Crystal Report もありませんし
(そもそもクリレポでは動的なバーコード印刷は不可?)
ActiveReportも極力導入しない方向で考えています。

そこで、Excelファイルにバーコードの画像(jpeg)を貼り付けて
印刷することを検討しています。
こちらのサンプルも参考にさせていただいて、文字列をセルに設定する方法は
わかったのですが、バーコード(の画像)が設定できません。

ネットで見つけたVB.NETでセルに画像を貼り付けるサンプルでは

xl.ActiveWorkbook.Worksheets("Sheet2").Pictures.Insert("C:\\temp\\1.jpg").select();

で、セルに貼り付けているようなのですが・・・。

VC#で、Excelに画像を貼り付ける方法をご存知であればご教示ください。
こちらの掲示板での質問が初めてですので、情報不足等あれば
加筆しますのでご指摘ください。

よろしくお願いします。

引用返信 編集キー/
■40778 / inTopicNo.2)  Re[1]: Excelのセルに画像を貼り付けたい
□投稿者/ 魔界の仮面弁士 (1263回)-(2009/09/02(Wed) 19:04:21)
No40776 (陽昇 さん) に返信
> 上記環境で、バーコードを作成及び印刷するアプリを作成しています。
状況によっては、バーコード フォントを使うという選択肢も。


> バーコードの作成は出来たのですが、印刷が出来ずに悩んでいます。
PrintDocument で実装するとか。


> ネットで見つけたVB.NETでセルに画像を貼り付けるサンプルでは
> xl.ActiveWorkbook.Worksheets("Sheet2").Pictures.Insert("C:\\temp\\1.jpg").select();
> で、セルに貼り付けているようなのですが・・・。
どう見ても、VB.NET の構文では無いですよコレ。
"\" が "\\" と表記されていますし、末尾に セミコロンもありますので、
C# で無いとしたら、JScript のコードでしょうかね。


> VC#で、Excelに画像を貼り付ける方法をご存知であればご教示ください。
方法は幾つかありますが、とりあえずその一つを。

# 以下、基本的な Excel 制御(Excel を開き、セル上のデータを読み書きするなど)は
# ご自身で実装出来るという前提で回答しています。


// (1) 対象の Excel.Worksheet オブジェクトの Shapes プロパティから、
//     Excel.Shapes オブジェクトを取得する。
var shapes = targetSheet.Shapes;

// (2) Excel.Shapes オブジェクトの AddPicture メソッドを呼び出し、
//     Excel.Shape オブジェクトを取得する。メソッド引数にはファイル名と座標を指定。
var shape = shapes.AddPicture(fileName, Office.MsoTriState.msoFalse, Office.MsoTriState.msoTrue, left, top, width, height);
//     もし、特定のセル位置に併せて配置したい場合には、対象セル範囲を示す Excel.Range オブジェクトの
//     Top / Left / Width / Height プロパティから、セル位置の座標を得る事ができます。

// (3) 画像の貼り付けはこれで完了。必要に応じて、Excel.Shape オブジェクトのプロパティ等を用いて、
//     画像の背景や枠線色などを調整できます(今回は不要かと思いますが)。

// (4) 最後に、使用していた Excel オブジェクトを破棄します。
if(Marshal.IsComObject(shape)) Marshal.ReleaseComObject(shape);
if(Marshal.IsComObject(shapes)) Marshal.ReleaseComObject(shapes);
if(Marshal.IsComObject(targetSheet)) Marshal.ReleaseComObject(targetSheet);

引用返信 編集キー/
■40792 / inTopicNo.3)  Re[2]: Excelのセルに画像を貼り付けたい
□投稿者/ 陽昇 (2回)-(2009/09/03(Thu) 10:54:48)
No40778 (魔界の仮面弁士 さん) に返信

早速の回答ありがとうございます。

> どう見ても、VB.NET の構文では無いですよコレ。
> "\" が "\\" と表記されていますし、末尾に セミコロンもありますので、
> C# で無いとしたら、JScript のコードでしょうかね。
>

ああ、そうでした。取り込んで中途半端に修正してました。

xl.ActiveWorkbook.Worksheets("Sheet2").Pictures.Insert("C:\temp\1.jpg").select()

です。申し訳ありません。

>
> // (2) Excel.Shapes オブジェクトの AddPicture メソッドを呼び出し、
> // Excel.Shape オブジェクトを取得する。メソッド引数にはファイル名と座標を指定。
> var shape = shapes.AddPicture(fileName, Office.MsoTriState.msoFalse, Office.MsoTriState.msoTrue, left, top, width, height);
> // もし、特定のセル位置に併せて配置したい場合には、対象セル範囲を示す Excel.Range オブジェクトの
> // Top / Left / Width / Height プロパティから、セル位置の座標を得る事ができます。
>

「Office.MsoTriState.〜」でビルドエラーとなってしまいます。
「名前 'Office' は現在のコンテキスト内に存在しません。」

ソリューションエクスプローラで参照設定に「Microsoft Excel 10.0 ObjectLibrary」を追加して(ソリューションエクスプローラでは、「Excel」「Microsoft.Office.Core」が表示されています)
ソース上で「using Excel;」としている状態です。
テキトー過ぎるかも知れませんが、「using Microsoft.Office.Core;」や「using Microsoft.Office;」を
追加してみても、状況は変わりませんでした。

MSDNを見ると、「MsoTriState」は
名前空間: Microsoft.Office.Core
アセンブリ: office (office.dll 内)
の列挙型となっていますが、実装の方法がわかりません。

ド素人過ぎる質問かもしれませんが、何卒よろしくお願いします。



引用返信 編集キー/
■40818 / inTopicNo.4)  Re[3]: Excelのセルに画像を貼り付けたい
□投稿者/ 魔界の仮面弁士 (1266回)-(2009/09/03(Thu) 20:23:09)
No40792 (陽昇 さん) に返信
> MSDNを見ると、「MsoTriState」は 
>   名前空間: Microsoft.Office.Core
>   アセンブリ: office (office.dll 内) 
> の列挙型となっていますが、実装の方法がわかりません。
その場合には、
 Microsoft.Office.Core.MsoTriState.msoTrue
のように、名前空間も含めて記述してください。


長すぎるようであれば、using でインポートすることで、
 using Microsoft.Office.Core;
   :
 MsoTriState.msoTrue
のように、名前空間を省略して記述できます。


あるいは、名前空間やクラス名(型)に対して別名を与えて、
 using Foo = Microsoft.Office.Core;
   :
 Foo.MsoTriState.msoTrue
のように記述することもできます。
http://msdn.microsoft.com/ja-jp/library/sf0df423.aspx

引用返信 編集キー/
■40822 / inTopicNo.5)  Re[4]: Excelのセルに画像を貼り付けたい
□投稿者/ 陽昇 (3回)-(2009/09/03(Thu) 21:27:34)
No40818 (魔界の仮面弁士 さん) に返信

ありがとうございます!下記でできました。

>
> 長すぎるようであれば、using でインポートすることで、
>  using Microsoft.Office.Core;
>    :
>  MsoTriState.msoTrue
> のように、名前空間を省略して記述できます。
>


解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -