- PR -

C#での印刷でExcelシートを指定

1
投稿者投稿内容
にゃんた
会議室デビュー日: 2007/01/11
投稿数: 3
投稿日時: 2007-01-11 12:34
WindowsXP
VisualStudio2003 C#
Oracle10g

帳票出力をするために、Excelのテンプレートを使用し作業しています。
テンプレートのシートは
帳票レイアウト部のシートと、
データ格納部(レイアウトのリンク元)のシートにわかれています。
そこで今回印刷の処理に困っており、質問させて頂きました。

現在は印刷時Excelのシートインデックスを指定し、出力しています。
しかし、帳票の印刷すべきシートはn枚あります。(テンプレートによって出力すべき枚数が違う)
データ格納部のシートは印刷してはいけない為、すべてのシートを印刷することはできません。
そこで、帳票レイアウト部のシート名を'AAAAx'
データ格納部のシート名を'BBBBx'
に変更し、
@シート名が'AAAAx'のシートを印刷対象にして
対象件数をカウントし、印刷枚数を指定しようと考えておりました。
しかし、シート名の取得の処理がわかりません。

今回教えて頂きたいのは、
1.@を実現でき印刷の問題は解決できるか?
2.他に問題解決の方法はあるか?
の2点をご教授頂きたいです。

説明下手で申し訳ございませんが、どうぞ宜しくお願いいたします。


現在のソース
-------------------------------------
Excel.Application xlApplication = null;
Excel.Workbooks xlBooks = null;
Excel.Workbook xlBook = null;
Excel.Sheets xlSheets = null;
Excel.Worksheet xlSheet = null;

xlApplication = new Excel.Application();
xlBooks = xlApplication.Workbooks;

//テンプレートのファイル名取得
string strTempExcelname = getTemplateName();

// 既存のTemplateから開く
xlBook =
xlBooks.Open(strTempExcelname + ".xlt",
Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing);

//帳票データの格納
Edit_Slit(ref xlApplication)

// 上書き保存
xlBook.Save();

///////////////////////////////////////
//印刷処理
///////////////////////////////////////
//Sheet指定
xlSheets = xlApplication.Worksheets;
xlSheet = (Excel.Worksheet)xlSheets[1];

//印刷
xlSheet.PrintOut(1,1,1,false,xlApplication.ActivePrinter,Type.Missing,Type.Missing,Type.Missing);

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-01-11 13:01
引用:

にゃんたさんの書き込み (2007-01-11 12:34) より:

(1) シート名が'AAAAx'のシートを印刷対象にして
対象件数をカウントし、印刷枚数を指定しようと考えておりました。
しかし、シート名の取得の処理がわかりません。


Excel.Worksheets のデフォルト プロパティから、シート名で Worksheet を取得することが可能です。
また、その名前は Name プロパティで取得できます。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-01-11 13:20
< >

 C# の印刷処理について (livedoor.jp)

</ >
_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
にゃんた
会議室デビュー日: 2007/01/11
投稿数: 3
投稿日時: 2007-01-11 13:39
[/quote]
Excel.Worksheets のデフォルト プロパティから、シート名で Worksheet を取得することが可能です。
また、その名前は Name プロパティで取得できます。

[/quote]

早々のご返事ありがとうございます。
上記の方法ですとまず、シート名を指定して処理を行うといった形になりませんでしょうか?
考えております、処理の流れ(あっているかわかりませんが)は
@、ブックのシート名を取得する(シートはいくつあるか不明)
for eachなどで回そうと考えてたのですが、式がわかりませんでした・・・

A、@で取得したシート名とシート名が(AAAAx)を比較し、OKであれば対象となる
x=ワイルドカード

B対象のものを印刷

の順で実装できればと思っています。
Bの印刷ですが、こちらは対象のものが合った時点で一枚一枚印刷する予定です。
もし、対象のもの全てを指定して、一回で印刷できる方法などありましたら教えて頂けますと幸いです。

以上、質問ばかりで申し訳ないですが宜しくお願いいたします。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2007-01-11 13:53
最近対話できない人が増えたよね。
極端な話だが自分の説明不足が原因なのに相手に誤読力がないと言う人さえいる。
悲しいことだ。
1

スキルアップ/キャリアアップ(JOB@IT)