Страница 1 из 1
Export & Render progress
Добавлено: 21 мар 2011, 06:03
Сергей
Добрый день.
Есть ли событие изменения прогресса рендеринга и экспорта отчета? Либо что-то подобное? Как хотя бы вывести окно прогресса экспорта в PDF?
Используемый код:
Код: Выделить всё
StiReport report = StiReport.GetReportFromAssembly(reportPath);
report.Render(true);
report.ExportDocument(StiExportFormat.Pdf, output);
Export & Render progress
Добавлено: 21 мар 2011, 09:53
Ivan
Здравствуйте.
Вы можете использовать следующий код (при использовании этого метода отображается меню настроек экспорта):
Код: Выделить всё
StiReport report = new StiReport();
StiPdfExportService pdfExport = new StiPdfExportService();
pdfExport.Export(report, @"d:\test_report.pdf");
Если надо экспортировать с индикатором прогресса, но без отображения меню настроек экспорта, можно использовать следующий код:
Код: Выделить всё
FileStream fs = new FileStream(@"d:\test_report.pdf", FileMode.Create, FileAccess.ReadWrite);
StiPdfExportService pdfExport = new StiPdfExportService();
StiPdfExportSettings exportSettings = new StiPdfExportSettings();
pdfExport.Progress = StiGuiOptions.GetProgressInformation(pdfExport.OwnerWindow, StiGuiMode.Gdi);
pdfExport.Progress.Start(StiLocalization.Get("Export", "ExportingReport"));
pdfExport.ExportPdf(report, fs, exportSettings);
pdfExport.Progress.Close();
pdfExport.Progress = null;
Спасибо.
Export & Render progress
Добавлено: 21 мар 2011, 12:45
Сергей
Спасибо.
А получить значения прогресса в %% для самостоятельного отображения возможно?
Export & Render progress
Добавлено: 22 мар 2011, 06:14
Aleksey
Здравствуйте,
Как вариант, вы можете использовать следующий код:
Код: Выделить всё
private void button1_Click(object sender, EventArgs e)
{
StiReport report = new StiReport();
report.Load("E:\\Report.mrt");
report.Render(false);
FileStream fs = new FileStream(@"e:\test_report.pdf", FileMode.Create, FileAccess.ReadWrite);
StiPdfExportService pdfExport = new StiPdfExportService();
pdfExport.Exporting += new StiExportingEventHandler(pdfExport_Exporting);
pdfExport.ExportPdf(report, fs);
}
void pdfExport_Exporting(object sender, StiExportingEventArgs e)
{
// Ваш код для отображения прогресса в процентах, используя e.Value и e.Maximum
}
Сообщите, если понадобится дополнительная помощь.
Спасибо.
Export & Render progress
Добавлено: 22 мар 2011, 07:48
Сергей
Спасибо.
А то же самое для процесса рендеринга?
Export & Render progress
Добавлено: 22 мар 2011, 09:42
Сергей
Событие StiPdfExportService.Exporting вызывается двумя этапами. То есть, сначала обработчик быстро пробегает все значения StiExportingEventArgs.Value, а затем все повторяется более медленно. Это приводит к тому, что индикатор прогресса два раза пробегает значения от 0 до 100.
Как быть?
Export & Render progress
Добавлено: 22 мар 2011, 14:05
Jan
Здравствуйте,
unic писал(а):Спасибо.
А то же самое для процесса рендеринга?
Можно использовать событие Rendering отчета. Стоит учитывать, что если отчет требует компиляцию, то нужно использовать событие report.CompiledReport.Rendering.
Спасибо.
Export & Render progress
Добавлено: 22 мар 2011, 14:06
Jan
Здравствуйте,
unic писал(а):Событие StiPdfExportService.Exporting вызывается двумя этапами. То есть, сначала обработчик быстро пробегает все значения StiExportingEventArgs.Value, а затем все повторяется более медленно. Это приводит к тому, что индикатор прогресса два раза пробегает значения от 0 до 100.
Как быть?
Так и отображать - как операцию с двумя проходами.
Спасибо.
Export & Render progress
Добавлено: 24 мар 2011, 04:25
Сергей
Спасибо.
Не был уверен, что проходов всегда два.
Export & Render progress
Добавлено: 24 мар 2011, 10:24
Andrew
Спасибо.