Страница 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
Спасибо.