- - PR -
EXCELのPageBreakが取得できない
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2003-11-07 17:28
はじめまして。
現在、ASP.NET(C#)にて EXCELファイルを開いて画像を生成する プログラムを作っています。 サーバー環境: Win2000Server Office2000 VS.NET2003 その中で範囲を指定する為にPageBreakを見ようとしているのですが そこで下記のようなエラーが発生してしまいます。 エラー内容: Message:Range クラスの PageBreak プロパティを取得できません。 StackTrace: [ at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData) at Excel.Range.get_PageBreak() 組み込んでいるロジック(抜粋): ========================================== int ret = Int16.MaxValue; for(int i = checkStartRow; i < Int16.MaxValue; i++) { if(worksheet.get_Range(worksheet.Cells[i,1],worksheet.Cells[i,1]).Rows.PageBreak == (int)Excel.XlPageBreak.xlPageBreakAutomatic) ↑↑↑↑この行でエラーになります { ret = i; break; } } ================================================== ちなみに同様のモジュールを OSがWinXP Proの環境にのせて実行したり、 WindowsApplicationに組み込んで サーバーのローカルで実行する分には問題なく動きます。 プリンタの設定等も WinXP環境で動いているのと同様にしているのですが エラーになる原因がわかりません。 ご存知の方、どうかご教授よろしくお願いします。 |
|
投稿日時: 2003-11-07 17:58
直接の回答ではないかもしれませんが。
EXCELの「ページ範囲」は、プリンタとプリンタドライバに依存します。これはMSのページにも書いてあることです。つまり、EXCELやWORDは、印刷するためのページ範囲を計算するため、現在使用可能なプリンタから、そのプリンタが印字可能な範囲などの情報を取得します。 (フレーズ「余裕を持って」で検索) http://support.microsoft.com/default.aspx?scid=kb;ja;416697 http://support.microsoft.com/default.aspx?scid=kb;ja;400271 ところが、.NET Frameworkでは、セキュリティ設定で印刷が制限されています。例えば、あるサイトを見たところ、急に広告が印刷されたら困りますよね。そういうものを防ぐ目的です。ASP.NETのサーバサイドで動いているワーカプロセスも、その制限を受けます。そのためにプリンタにアクセスできない、と考えられます。 また、せっかく計算しても、違うコンピュータで、違うプリンタを使えば、設定がかえってあだになることもあります。MSサイトにあるWORD文書をダウンロードしてみると、たまにフッターが次ページにはみ出しているものがありませんか?私は古いプリンタを使っているのでしょっちゅうあるのです。 #自分で「余裕を持って改ページ処理を」と言っていながら、 #それに沿っていないとはどういうことだ。 |
1