Темой для этой статьи послужил один из вопросов пользователей генератора отчетов List & Label на форуме тех. поддержки.
I need to create a package of documents into 1 PDF file. So far I am able to create individual PDF file but I am not sure how to combine them. Can LL21 do this or I need to find different method to do this outside LL engine?
Как вы поняли из вопроса, пользователь хочет получить один PDF файл на основе нескольких отчетов.
К сожалению, штатного решения в L&L для этого случая не предусмотрено.
Как правило, отчеты распространяются в популярных форматах данных. Например, в PDF, DOC, или XLS. И, если вам нужно передавать много отчетов одной партией, приходится делать экспорт каждого из них в нужный формат. С другой стороны, тем кто получит эти файлы, придется открыть каждый и распечатать. Гораздо удобнее было бы все отчеты поместить в один документ. Так и отправлять, и распечатывать проще.
Давайте рассмотрим, как в FastReport.Net можно реализовать эту функциональность. Формировать отчеты нужно из кода пользовательского приложения.
1 2 3 4 5 6 7 8 9 10 11 |
Report report = new Report(); DataSet data = new DataSet(); data.ReadXml("K:/My documents/nwind.xml"); report.RegisterData(data); report.Load("K:/My documents/Master-Detail.frx"); report.Prepare(); report.Load("K:/My documents/Box.frx"); report.Prepare(true); //report.ShowPrepared(); FastReport.Export.Pdf.PDFExport exp = new FastReport.Export.Pdf.PDFExport(); report.Export(exp, "K:/My documents/exp.pdf"); |
Идея очень проста. В один объект отчета, мы загружаем и строим последовательно несколько отчетов. В итоге, подготовленные отчеты копятся в одном объекте, а когда нам нужно, отображаем их (ShowPrepared) или сразу экспортируем (Export).
В результате получаем последовательное отображение отчетов в PDF документе:
Таким образом мы можете, к примеру, в цикле формировать все отчеты из определенной папки.