ActiveReports for .NET 18.0J
エクスポート
ActiveReportsユーザーガイド > よくある質問 > 共通の項目(ページレポート/RDLレポート/セクションレポート) > エクスポート

Tiffファイルにエクスポートする際に解像度を設定する

Tiffファイルにエクスポートする際に解像度を指定して出力したい場合には、DpiXおよびDpiYプロパティを使用します。以下のサンプルコードを参考ください。

エクスポートフィルタの場合

エクスポートフィルタの場合、DpiXおよびDpiYプロパティは、TiffExportクラスに定義されています。

Visual Basic

Visual Basicコード
コードのコピー
Dim rpt As New SectionReport1
Dim TiffExport1 As New GrapeCity.ActiveReports.Export.Image.Tiff.Section.TiffExport()

' レポートを生成します。
rpt.Run(False)

' TIFFエクスポートの設定をします。
' (圧縮形式)
TiffExport1.CompressionScheme _
  = GrapeCity.ActiveReports.Export.Image.Tiff.Section.CompressionScheme.Ccitt3
' (解像度)
TiffExport1.DpiX = 400 '水平方向
TiffExport1.DpiY = 400 '垂直方向

' レポートをエクスポートします。
TiffExport1.Export(rpt.Document, Application.StartupPath + "¥TIFFExpt.tif")
                                                

C#

C#コード
コードのコピー
SectionReport1 rpt = new SectionReport1();
GrapeCity.ActiveReports.Export.Image.Tiff.Section.TiffExport tiffExport1
  = new GrapeCity.ActiveReports.Export.Image.Tiff.Section.TiffExport();
// レポートを生成します。
rpt.Run(false);
// TIFFエクスポートの設定をします。
// (圧縮形式)
tiffExport1.CompressionScheme =
  GrapeCity.ActiveReports.Export.Image.Tiff.Section.CompressionScheme.Ccitt3;
// (解像度)
tiffExport1.DpiX = 400;
tiffExport1.DpiY = 400;
// レポートをエクスポートします。
tiffExport1.Export(rpt.Document, Application.StartupPath + "¥¥TIFFExpt.tif");

描画拡張機能の場合


描画拡張機能の場合、DpiXおよびDpiYプロパティは、Image.Page.Settingsクラスに定義されています。

Visual Basic

Visual Basicコード
コードのコピー
' ページレポートを生成します。
Dim file_name As String = Application.StartupPath + "¥..¥..¥PageReport1.rdlx"
Dim pageReport As New GrapeCity.ActiveReports.PageReport(New System.IO.FileInfo(file_name))
Dim pageDocument As New GrapeCity.ActiveReports.Document.PageDocument(pageReport)

' 出力するファイルを定義します。
Dim exportFile As String = Application.StartupPath + "¥TiffRender.tif"
Dim myFile As New System.IO.FileInfo(exportFile)

' 出力するファイルに関する詳細設定を行います。
Dim settings As New GrapeCity.ActiveReports.Export.Image.Page.Settings
' (ファイル形式)
settings.ImageType = GrapeCity.ActiveReports.Export.Image.Page.Renderers.ImageType.TIFF
' (圧縮形式)
settings.Compression = GrapeCity.ActiveReports.Export.Image.Page.Renderers.Compression.Ccitt3
' (解像度)
settings.DpiX = 500 '水平方向
settings.DpiY = 500 '垂直方向

' レポートをエクスポートします。
Dim _renderingExtension As New GrapeCity.ActiveReports.Export.Image.Page.ImageRenderingExtension
Dim _provider As New GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider _
  (myFile.Directory, System.IO.Path.GetFileNameWithoutExtension(myFile.Name))
pageDocument.Render(_renderingExtension, _provider, settings)
                                                

C#

C#コード
コードのコピー
// ページレポートを生成します。
string file_name = Application.StartupPath + @"¥..¥..¥PageReport1.rdlx";
GrapeCity.ActiveReports.PageReport pageReport
  = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(file_name));
GrapeCity.ActiveReports.Document.PageDocument pageDocument
  = new GrapeCity.ActiveReports.Document.PageDocument(pageReport);
// 出力するファイルを定義します。
string exportFile = Application.StartupPath + "¥¥TiffRender.tif";
System.IO.FileInfo myFile = new System.IO.FileInfo(exportFile);
// 出力するファイルに関する詳細設定を行います。
GrapeCity.ActiveReports.Export.Image.Page.Settings settings
  = new GrapeCity.ActiveReports.Export.Image.Page.Settings();
// (ファイル形式)
settings.ImageType = GrapeCity.ActiveReports.Export.Image.Page.Renderers.ImageType.TIFF;
// (圧縮形式)
settings.Compression = GrapeCity.ActiveReports.Export.Image.Page.Renderers.Compression.Ccitt3;
// (解像度)
settings.DpiX = 400; //水平方向
settings.DpiY = 400; //垂直方向
// レポートをエクスポートします。
GrapeCity.ActiveReports.Export.Image.Page.ImageRenderingExtension _renderingExtension
  = new GrapeCity.ActiveReports.Export.Image.Page.ImageRenderingExtension();
GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider _provider
  = new GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider
    (myFile.Directory, System.IO.Path.GetFileNameWithoutExtension(myFile.Name));
pageDocument.Render(_renderingExtension, _provider, settings);

なお、描画拡張機能は、ページレポートについてのみ使用可能です。

 

Excelファイルの印刷時にレポートの用紙サイズが反映されない

ActiveReportsでExcelファイルを出力する場合、XlsExportクラスを使用する方法とSpreadBuilderクラスを使用する方法があります。出力するExcelファイルの用紙サイズを設定する方法は、出力方法によって異なります。

XlsExportクラスの場合

XlsExportクラスを使用してExcelエクスポートを行う場合には、XlsPageSettingsクラスのPaperSizeOrientationプロパティで、Excelファイルの用紙サイズや方向を、任意に指定することが可能です。

メモ: この用紙設定機能は、9.0Jで追加された新機能です。

Visual Basic

Visual Basicコード
コードのコピー
Dim rpt As New rptSample()
rpt.Run(False)

Dim xlsExport1 As New GrapeCity.ActiveReports.Export.Excel.Section.XlsExport()

' Excelファイルの用紙サイズ・方向を「A3横」に設定します。
xlsExport1.PageSettings.PaperSize = PaperSizes.A3
xlsExport1.PageSettings.Orientation _
  = GrapeCity.ActiveReports.Document.Section.PageOrientation.Landscape

' レポートをExcelファイルにエクスポートします。
xlsExport1.Export(rpt.Document, "C:¥work¥test.xls")

C#

C#コード
コードのコピー
rptSample rpt = new rptSample();
rpt.Run(false);

GrapeCity.ActiveReports.Export.Excel.Section.XlsExport xlsExport1 
  = new GrapeCity.ActiveReports.Export.Excel.Section.XlsExport();

// Excelファイルの用紙サイズ・方向を「A3横」に設定します。
xlsExport1.PageSettings.PaperSize = PaperSizes.A3;
xlsExport1.PageSettings.Orientation 
  = GrapeCity.ActiveReports.Document.Section.PageOrientation.Landscape;

// レポートをExcelファイルにエクスポートします。
xlsExport1.Export(rpt.Document, @"C:¥work¥test.xls");

なお、これらのプロパティを設定しない場合、レポートの用紙サイズ・方向がExcelファイルの印刷時の設定に反映されます。

SpreadBuilderクラスの場合

SpreadBuilder機能を使用してExcelエクスポートを行う場合には、GrapaCity.SpreadBuilder.Printing名前空間のPageSetupクラスの PaperSizeやOrientationプロパティで、Excelファイルの用紙サイズや方向を、任意に指定することが可能です。

Visual Basic

Visual Basicコード
コードのコピー
Dim sb As New GrapeCity.SpreadBuilder.Workbook
' 新規シートを追加します。
sb.Sheets.AddNew()
With sb.Sheets(0)
    ' 用紙サイズをB4に設定します。
    .PageSetup.PaperSize = System.Drawing.Printing.PaperKind.B4
    .PageSetup.Orientation = GrapeCity.SpreadBuilder.Printing.PagePrintOrientation.Landscape
    ' シートの余白を設定します。各***Marginプロパティの単位は、Point(1/72インチ)です。
    .PageSetup.LeftMargin = 36
    .PageSetup.RightMargin = 36
    .PageSetup.TopMargin = 36
    .PageSetup.BottomMargin = 36
    .PageSetup.HeaderMargin = 72
    .PageSetup.FooterMargin = 72
    .Columns(0).Width = 2 * 1440
    .Cell(0, 0).SetValue("AAAA株式会社" & vbNewLine & "BBBB株式会社")
    .Cell(0, 0).FontName = "MS ゴシック"
    ' 折り返して全体を表示する」を指定します。
    .Cell(0, 0).WrapText = True
End With
' ワークブックをExcelファイルへ出力します。 
sb.Save("C:¥work¥test.xls")

C#

C#コード
コードのコピー
GrapeCity.SpreadBuilder.Workbook sb = new GrapeCity.SpreadBuilder.Workbook();
// 新規シートを追加します。
sb.Sheets.AddNew();
// 用紙サイズをB4に設定します。
sb.Sheets[0].PageSetup.PaperSize = System.Drawing.Printing.PaperKind.B4;
sb.Sheets[0].PageSetup.Orientation= GrapeCity.SpreadBuilder.Printing.PagePrintOrientation.Portrait;
// シートの余白を設定します。各***Marginプロパティの単位は、Point(1/72インチ)です。
sb.Sheets[0].PageSetup.LeftMargin = 36;
sb.Sheets[0].PageSetup.RightMargin = 36;
sb.Sheets[0].PageSetup.TopMargin = 36;
sb.Sheets[0].PageSetup.BottomMargin = 36;
sb.Sheets[0].PageSetup.HeaderMargin = 72;
sb.Sheets[0].PageSetup.FooterMargin = 72;
sb.Sheets[0].Columns(0).Width = 2 * 1440;
sb.Sheets[0].Cell(0, 0).SetValue("AAAA株式会社¥r¥nBBBB株式会社");
sb.Sheets[0].Cell(0, 0).FontName = "MS ゴシック";
//「折り返して全体を表示する」を指定します。
sb.Sheets[0].Cell(0, 0).WrapText = true;
// ワークブックをExcelファイルへ出力します。
sb.Save(@"C:¥work¥test.xls");

Excelシートを別のExcelブックにコピーするとセルや罫線の色が変わる

本現象は、Microsoft Excelと、ActiveReportsのExcelエクスポートの仕様により発生しています。

Excelにおけるセルや罫線などの色は、カラーパレットに登録されている、56種類のカラーインデックスにより設定されます。このカラーパレットのデータは、ワークシート単位ではなく、ワークブック単位で保存されています。

ActiveReportsのExcelエクスポート機能(SpreadBuilder機能を含む)は、デフォルトの設定では、コントロールに設定された色(.NET FrameworkのColor構造体)が反映されるよう、カラーパレットを任意の色に変更した上で、Excelファイルを出力しています。

そのため、Excelエクスポートで出力したExceファイルのワークシートを、別のワークブックへコピー(移動)した際には、そのワークブックのカラーパレットが適用され、セルや罫線の色が変化する場合があります。

本動作を回避するには、以下の2つの方法があります。

Excelのデフォルトのカラーパレットを使用してエクスポートする

XlsExportクラス(SpreadBuilder機能の場合、Workbookクラス)のUseDefaultPaletteプロパティを"True"に設定して、Excelエクスポートを行ってください。この場合、Excelのデフォルトのカラーパレット、またはコントロールのForeColorやBackColorプロパティなどに定義されているカスタムカラーの中から最も近い色を使用してエクスポートを行います。

このため、レポートの実際の色とは完全に一致しない色でエクスポートされる場合がございます。これはUseDefaultPaletteプロパティを"True"に設定した場合の仕様上の動作となります。

カラーパレットもコピーする

ワークブックのカラーパレットは、別のワークブックにコピーすることが可能です。

Excelエクスポートで出力したExceファイルのワークシートを別のワークブックにコピーする際に、カラーパレットもコピーすることで元のワークシートの色を維持したままコピーできます。

運用上の対処方法となりますが、マイクロソフト社のWebサイトで公開されている以下の内容をご参照の上、ご検討ください。

[ブックのカラー パレットを変更する]

ただし、カラーパレットをコピーした場合、コピー先ブックの別シートの表示色も変化する可能性がありますので、あらかじめご注意ください。

PDFのダウンロードダイアログで「開く」を選択すると、「この文書を開くときにエラーが発生しました。このファイルが見つかりません。」というエラーが発生する

カスタムWebのエクスポート」または「カスタムWebのエクスポート(ページレポート)」のトピックにあるような方法でクライアントにPDFデータを配信する場合、作成されたPDFデータのダウンロードおよび表示動作は、ActiveReportsの機能ではなく、Responseオブジェクト、クライアント環境のブラウザ、Adobe Readerの機能によって行なわれます。

本エラーは、ActiveReportsの使用とは関係なく、一般的に発生するものですが、対処方法としては以下のような内容が考えられます。こちらをお試しください。

  1. サーバ側でファイルのキャッシュを行わない設定になっている場合、本現象が発生する可能性があります。詳細については、マイクロソフト社のWebサイトで公開しているサポート技術情報をご覧ください。
  2. 上記1.の内容とは逆になりますが、過去の事例において、@OutputCacheディレクティブを使用してキャッシュを有効にしている場合、PDFファイルを開く際に同様なエラーが発生するという報告がございました。問題となっているWebFormにおいて、@OutputCacheディレクティブを使用している場合には、@OutputCacheを使用しない方法をお試しください。
  3. ご使用のブラウザで、PDFファイルを表示するために必要な設定が正しく行われているかご確認下さい。詳細については、アドビシステムズ社のWebサイトで公開されているサポート技術情報をご覧ください。
    また、HTTPS URL を使用してPDF ファイルを開いた場合や、キャッシュファイルを作成できない場合に本現象が発生する可能性があります。こちらの詳細については、マイクロソフト社のWebサイトで公開しているサポート技術情報をご覧ください。
  4. Internet Explorerの設定を変更することで、本現象を回避できる場合があるようです。 問題となっているクライアント環境のInternet Explorerにおいて、「ツール」→「インターネットオプション」→「セキュリティ」からセキュリティ設定を確認し、セキュリティレベルを「中」以下に設定する方法をご検討ください。
  5. 問題となっているクライアント環境で、ファイアウォール機能が有効になっている場合、一時的に無効にして、現象が再現するかどうかをご確認ください。
  6. クライアント環境のセキュリティソフト等の影響により、ダウンロードしたファイルをそのまま「開く」ことができない場合があるようです。こちらの内容をご確認ください。
  7. 本件のように、Responseオブジェクトを使用してクライアントにPDFデータを送信する場合、データのダウンロード動作はブラウザに、ダウンロードしたデータを開く動作はAdobe Reader等のヘルパーアプリケーションによって行われます。そのため、これらのバージョンや設定等の条件によっては、動作が異なる場合があります。

    原因の切り分けのため、別のクライアント環境から同様の操作を行った場合に、現象が発生するかどうかをお試しください。別の環境で現象が発生しない場合は、前述の条件に違いがないかどうかをご確認ください。

関連トピック