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

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

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

Re[6]: C#でのExcel操作


(過去ログ 75 を表示中)

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

■44438 / inTopicNo.1)  C#でのExcel操作
  
□投稿者/ 初心者 (79回)-(2009/12/09(Wed) 15:27:44)

分類:[C#] 


Visual Studio 2005 C#を使用しています。

Excelのシートに範囲指定(A6:D10)のようにして画像を貼り付けたいのですが、
どのように行えばよろしいのでしょうか?

貼り付けは下記のソースで行いました。
shapes.AddPicture(@"C:\work\aaa.bmp",
Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoTrue,
100, 100, 100, 100);

引用返信 編集キー/
■44443 / inTopicNo.2)  Re[1]: C#でのExcel操作
□投稿者/ 魔界の仮面弁士 (1408回)-(2009/12/09(Wed) 16:18:57)
No44438 (初心者 さん) に返信
> Excelのシートに範囲指定(A6:D10)
範囲を表す Range オブジェクトを、Worksheet.Range プロパティにて取得してください。
C# からは、.get_Range("A6:D10") のようにメソッドとしてアクセスする事になります。

Range オブジェクトが取得できれば、そこから Left/Top/Width/Height プロパティにて
セルの座標が取得できますので、それを指定すれば良いかと。

> shapes.AddPicture(@"C:\work\aaa.bmp",
> Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoTrue,
> 100, 100, 100, 100);
AddPicture メソッドは、Shape オブジェクトを返しますので、
 Shape shp = shapes.AddPicture(@"C:\work\aaa.bmp", ……);
 Marshal.ReleaseComObjet(shp);
のようにする必要があるかと思います。
引用返信 編集キー/
■44447 / inTopicNo.3)  Re[2]: C#でのExcel操作
□投稿者/ 初心者 (80回)-(2009/12/09(Wed) 16:38:46)
No44443 (魔界の仮面弁士 さん) に返信

> 範囲を表す Range オブジェクトを、Worksheet.Range プロパティにて取得してください。
> C# からは、.get_Range("A6:D10") のようにメソッドとしてアクセスする事になります。
>
> Range オブジェクトが取得できれば、そこから Left/Top/Width/Height プロパティにて
> セルの座標が取得できますので、それを指定すれば良いかと。
>
>>shapes.AddPicture(@"C:\work\aaa.bmp",
>>Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoTrue,
>>100, 100, 100, 100);
> AddPicture メソッドは、Shape オブジェクトを返しますので、
>  Shape shp = shapes.AddPicture(@"C:\work\aaa.bmp", ……);
>  Marshal.ReleaseComObjet(shp);
> のようにする必要があるかと思います。

魔界の仮面弁士 さん
ありがとうございます。

無事に取得できました。
オブジェクトの方もありがとうございます。
解放は忘れていました。

大変申し訳ないのですが、
取得の方はできたのですが、取得ではObject型で、設定の方はfloat型になります。
これって、型変換をしないとやはりつかえないのでしょうか?

引用返信 編集キー/
■44449 / inTopicNo.4)  Re[3]: C#でのExcel操作
□投稿者/ 魔界の仮面弁士 (1409回)-(2009/12/09(Wed) 16:48:55)
No44447 (初心者 さん) に返信
> 取得の方はできたのですが、取得ではObject型で、設定の方はfloat型になります。
Range.Left プロパティ等は、Excel 側からは
「内部処理形式 Double な Variant」が返されています。

これを C# 側で受け取った場合、
「float の値を代入した object」として扱われます。

> これって、型変換をしないとやはりつかえないのでしょうか?
キャストしてください。型は object ですが、中身は float のはずです。
引用返信 編集キー/
■44453 / inTopicNo.5)  Re[4]: C#でのExcel操作
□投稿者/ 初心者 (82回)-(2009/12/09(Wed) 17:59:39)
2009/12/09(Wed) 18:00:07 編集(投稿者)


No44449 (魔界の仮面弁士 さん) に返信
> Range.Left プロパティ等は、Excel 側からは
> 「内部処理形式 Double な Variant」が返されています。
>
> これを C# 側で受け取った場合、
> 「float の値を代入した object」として扱われます。
>
> キャストしてください。型は object ですが、中身は float のはずです。


魔界の仮面弁士 さん
ありがとうございます。
キャストではうまくできなくて、Parseを使用してできました。

ありがとうございました。
解決済み
引用返信 編集キー/
■44459 / inTopicNo.6)  Re[5]: C#でのExcel操作
□投稿者/ 魔界の仮面弁士 (1410回)-(2009/12/09(Wed) 19:05:33)
No44453 (初心者 さん) に返信
>>キャストしてください。型は object ですが、中身は float のはずです。
大変失礼しました。C# の float は Single でしたね…。
今回は Double なので、double にキャストすることになります。

最終的に必要なのは float なのであれば、たとえば
 float fLeft = (float)(double)range.Left;
などと記述することができます。


> キャストではうまくできなくて、Parseを使用してできました。
あるいは、System.Convert.ToSingle(object) も利用できます。
解決済み
引用返信 編集キー/
■44496 / inTopicNo.7)  Re[6]: C#でのExcel操作
□投稿者/ 初心者 (83回)-(2009/12/10(Thu) 10:46:45)
No44459 (魔界の仮面弁士 さん) に返信
> ■No44453 (初心者 さん) に返信
> >>キャストしてください。型は object ですが、中身は float のはずです。
> 大変失礼しました。C# の float は Single でしたね…。
> 今回は Double なので、double にキャストすることになります。
>
> 最終的に必要なのは float なのであれば、たとえば
>  float fLeft = (float)(double)range.Left;
> などと記述することができます。
>
>
>>キャストではうまくできなくて、Parseを使用してできました。
> あるいは、System.Convert.ToSingle(object) も利用できます。

魔界の仮面弁士 さん
ありがとうございます。

大変参考になりました。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -