DioDocs for Excelでは、Excelのセル範囲をPDFに描画することができます。
本機能は、大量のデータを含むワークシートの特定セル範囲のみを描画する場合に特に役立ちます。たとえば、「販売数」、「販売部長」、「地域」などのフィールドを持つ大量の販売データを含むワークシートがあるとします。そのワークシートから「販売部長」の情報を除外し「販売数」と「地域」のみをエクスポートするには、本機能でそのセル範囲をPDFファイルの特定の場所に描画して完全なPDFレポートを生成できます。
PDFファイル内にExcelのセル範囲を描画するには、最初にPrintManager クラスのインスタンスを作成し、Draw() メソッドを使用してPDFページのある場所にセル範囲を描画する必要があります。追加情報(Excelファイルに存在しないデータ)を追加する場合は、改ページ設定を行ってからPrintManagerクラスのAppendPage() メソッドを使用できます。そして、UpdatePageNumberAndPageSettings() メソッドを呼び出し、ページ番号のインデックスと各ページのページ設定を更新します。最後に、GcPdfDocument.Save() メソッドを使用してPDFファイルを保存します。
次のコードは、PDF内にExcelのセル範囲を描画する方法を示します。
C# |
コードのコピー
|
---|---|
//ワークブックを初期化します Workbook workbook = new Workbook(); //既存のワークシートを取得します IWorksheet worksheet = workbook.Worksheets[0]; //値を設定します worksheet.Range["A4:C4"].Value = new string[] { "Device", "Quantity", "Unit Price" }; worksheet.Range["A5:C8"].Value = new object[,] { { "T540p", 12, 9850 }, { "T570", 5, 7460 }, { "Y460", 6, 5400 }, { "Y460F", 8, 6240 } }; //スタイル設定を行います worksheet.Range["A4:C4"].Font.Bold = true; worksheet.Range["A4:C4"].Font.Color = Color.White; worksheet.Range["A4:C4"].Interior.Color = Color.LightBlue; worksheet.Range["A5:C8"].Borders[BordersIndex.InsideHorizontal].Color = Color.Orange; worksheet.Range["A5:C8"].Borders[BordersIndex.InsideHorizontal].LineStyle = BorderLineStyle.DashDot; /* 注意: この機能を使用するには、DioDocs for PDF の有効なライセンスが必要です */ //PDFドキュメントを作成します GcPdfDocument doc = new GcPdfDocument(); Page page = doc.NewPage(); GcPdfGraphics g = page.Graphics; //PrintManagerクラスのインスタンスを作成します PrintManager printManager = new PrintManager(); //ページ上に指定された位置に範囲「A4:C8」を描画します printManager.Draw(page, new PointF(30, 100), worksheet.Range["A4:C8"]); //変更されたページをPDFファイルに保存します doc.Save(@"RenderExcelRangesInsidePDFBasic.pdf"); |
次のサンプルコードは、PDFファイル内にExcelの範囲を描画すると共に、実行時に特定の場所にカスタムテキスト情報を追加する方法を示します。
C# |
コードのコピー
|
---|---|
//PDFファイルストリームを作成します FileStream outputStream = new FileStream("RenderExcelRangesInsidePDFAdvance.pdf", FileMode.Create); //新しいワークブックを作成します var workbook = new Excel.Workbook(); workbook.Open("FinancialReport.xlsx"); IWorksheet worksheet = workbook.Worksheets[0]; /* 注意: この機能を使用するには、DioDocs for PDF の有効なライセンスが必要です */ //PDFドキュメントを作成します Pdf.GcPdfDocument doc = new Pdf.GcPdfDocument(); doc.Load(File.Open("Acme-Financial Report 2018.pdf", FileMode.Open)); //PrintManagerクラスのインスタンスを作成します Excel.PrintManager printManager = new Excel.PrintManager(); //シート3の内容を4ページ目に描画します IRange printArea1 = workbook.Worksheets[2].Range["A3:C24"]; SizeF size1 = printManager.GetSize(printArea1); RectangleF position1 = doc.FindText(new GrapeCity.Documents.Pdf.FindTextParams("Proposition enhancements are", true, true), new GrapeCity.Documents.Common.OutputRange(4, 4))[0].Bounds[0].ToRect(); printManager.Draw(doc.Pages[3], new RectangleF(position1.X + position1.Width + 70, position1.Y, size1.Width, size1.Height), printArea1); //シート1の内容を5ページ目に描画します IRange printArea2 = workbook.Worksheets[0].Range["A4:E29"]; SizeF size2 = printManager.GetSize(printArea2); RectangleF position2 = doc.FindText(new GrapeCity.Documents.Pdf.FindTextParams("expenditure, an improvement in working", true, true), new GrapeCity.Documents.Common.OutputRange(5, 5))[0].Bounds[0].ToRect(); printManager.Draw(doc.Pages[4], new RectangleF(position2.X, position2.Y + position2.Height + 20, size2.Width, size2.Height), printArea2); //シート2の内容を6ページ目に描画します IRange printArea3 = workbook.Worksheets[1].Range["A2:E28"]; SizeF size3 = printManager.GetSize(printArea3); RectangleF position3 = doc.FindText(new GrapeCity.Documents.Pdf.FindTextParams("company will be able to continue", true, true), new GrapeCity.Documents.Common.OutputRange(6, 6))[0].Bounds[0].ToRect(); printManager.Draw(doc.Pages[5], new RectangleF(position3.X, position3.Y + position3.Height + 20, doc.Pages[5].Size.Width - position3.X * 2 - 10, size3.Height), printArea3); //変更されたページをPDFファイルに保存します doc.Save(outputStream); //PDFストリームを閉じます outputStream.Close(); |