PowerTools ActiveReports for .NET 11.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"); |
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クラスを使用してExcelエクスポートを行う場合には、XlsPageSettingsクラスのPaperSizeやOrientationプロパティで、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機能を使用して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つの方法があります。
XlsExportクラス(SpreadBuilder機能の場合、Workbookクラス)のUseDefaultPaletteプロパティを"True"に設定して、Excelエクスポートを行ってください。この場合、Excelのデフォルトのカラーパレット、またはコントロールのForeColorやBackColorプロパティなどに定義されているカスタムカラーの中から最も近い色を使用してエクスポートを行います。
このため、レポートの実際の色とは完全に一致しない色でエクスポートされる場合がございます。これはUseDefaultPaletteプロパティを"True"に設定した場合の仕様上の動作となります。
ワークブックのカラーパレットは、別のワークブックにコピーすることが可能です。
Excelエクスポートで出力したExceファイルのワークシートを別のワークブックにコピーする際に、カラーパレットもコピーすることで元のワークシートの色を維持したままコピーできます。
運用上の対処方法となりますが、マイクロソフト社のWebサイトで公開されている以下の内容をご参照の上、ご検討ください。
[ブックのカラー パレットを変更する]
ただし、カラーパレットをコピーした場合、コピー先ブックの別シートの表示色も変化する可能性がありますので、あらかじめご注意ください。
GrapeCity.ActiveReports.Export.Excel.v11.dllを参照しているアプリケーションをビルドする時、警告が表示される
GrapeCity.ActiveReports.Export.Excel.v11.dllでは内部的にDocumentFormat.OpenXml.dll(2.0.5022.0)を参照しています。そのため、GrapeCity.ActiveReports.Export.Excel.v11.dllを使用しているプロジェクト内で、最新のまたはこのバージョンと異なるDocumentFormat.OpenXml.dll(2.7.2.0など)を参照していると、2つ以上のファイルに、同じターゲットパスが指定されている旨を示す警告がビルド時に表示されます。
適切なバージョンのDocumentFormat.OpenXml.dllにリダイレクトするように、アプリケーション構成ファイル(app.config)に以下のように記載してください。
コードのコピー
|
|
---|---|
<?xml version="1.0"?> <configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="DocumentFormat.OpenXml" publicKeyToken="31bf3856ad364e35" culture="neutral"/> <bindingRedirect oldVersion="2.0.5022.0" newVersion="2.7.2.0"/> </dependentAssembly> </assemblyBinding> </runtime> </configuration> |
PDFのダウンロードダイアログで「開く」を選択すると、「この文書を開くときにエラーが発生しました。このファイルが見つかりません。」というエラーが発生する
「カスタムWebのエクスポート」または「カスタムWebのエクスポート(ページレポート)」のトピックにあるような方法でクライアントにPDFデータを配信する場合、作成されたPDFデータのダウンロードおよび表示動作は、ActiveReportsの機能ではなく、Responseオブジェクト、クライアント環境のブラウザ、Adobe Readerの機能によって行なわれます。
本エラーは、ActiveReportsの使用とは関係なく、一般的に発生するものですが、対処方法としては以下のような内容が考えられます。こちらをお試しください。
原因の切り分けのため、別のクライアント環境から同様の操作を行った場合に、現象が発生するかどうかをお試しください。別の環境で現象が発生しない場合は、前述の条件に違いがないかどうかをご確認ください。