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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.40776 の関連記事表示

<< 0 >>
■40776  Excelのセルに画像を貼り付けたい
□投稿者/ 陽昇 -(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に画像を貼り付ける方法をご存知であればご教示ください。
    こちらの掲示板での質問が初めてですので、情報不足等あれば
    加筆しますのでご指摘ください。

    よろしくお願いします。
親記事 /過去ログ70より / 関連記事表示
削除チェック/

■40778  Re[1]: Excelのセルに画像を貼り付けたい
□投稿者/ 魔界の仮面弁士 -(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);
記事No.40776 のレス /過去ログ70より / 関連記事表示
削除チェック/

■40792  Re[2]: Excelのセルに画像を貼り付けたい
□投稿者/ 陽昇 -(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 内)
    の列挙型となっていますが、実装の方法がわかりません。

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


記事No.40776 のレス /過去ログ70より / 関連記事表示
削除チェック/

■40818  Re[3]: Excelのセルに画像を貼り付けたい
□投稿者/ 魔界の仮面弁士 -(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
記事No.40776 のレス /過去ログ70より / 関連記事表示
削除チェック/

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

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

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

記事No.40776 のレス / END /過去ログ70より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -