Формирование отчета в Excel

Обсуждение Stimulsoft Reports.NET
Наталья
Сообщения: 110
Зарегистрирован: 19 фев 2009, 06:37

Формирование отчета в Excel

Сообщение Наталья »

Добрый день.
Мне необходимо реализовать следующее.
После запуска отчета и выбора периода данных, необходимо, чтобы при нажатиии на кнопку запуска отчета, отчет формировался сразу в Excel. Возможно ли сделать такое только средствами StimulReports?

Спасибо.
Edward
Сообщения: 930
Зарегистрирован: 09 июн 2006, 12:23

Формирование отчета в Excel

Сообщение Edward »

Здравствуйте,

Да, это возможно.

В WinForms:

Код: Выделить всё

StiPreviewForm form = new StiPreviewForm(report);
form.ViewerControl.ProcessExport += new EventHandler(ViewerControl_ProcessExport);
report.Render();
form.ShowDialog();


void ViewerControl_ProcessExport(object sender, EventArgs e)
{
    if (sender is StiExcelExportService)
    {
        StiExcelExportSettings settings = new StiExcelExportSettings();
        settings.ImageResolution = 300;
        settings.ImageQuality = 1;
        string myFileName = "D:\\MyFile.xls";
        report.ExportDocument(StiExportFormat.Excel, myFileName, settings);
        Process.Start(string.Format("\"{0}\"", myFileName));
    }
    else
    {
        (sender as StiExportService).Export(report);
    }
}
В web:

Код: Выделить всё

StiReportResponse.ResponseAsExcel2007(this, report)
Спасибо.
Наталья
Сообщения: 110
Зарегистрирован: 19 фев 2009, 06:37

Формирование отчета в Excel

Сообщение Наталья »

Edward писал(а):Здравствуйте,

Да, это возможно.

В WinForms:

Код: Выделить всё

StiPreviewForm form = new StiPreviewForm(report);
form.ViewerControl.ProcessExport += new EventHandler(ViewerControl_ProcessExport);
report.Render();
form.ShowDialog();


void ViewerControl_ProcessExport(object sender, EventArgs e)
{
    if (sender is StiExcelExportService)
    {
        StiExcelExportSettings settings = new StiExcelExportSettings();
        settings.ImageResolution = 300;
        settings.ImageQuality = 1;
        string myFileName = "D:\\MyFile.xls";
        report.ExportDocument(StiExportFormat.Excel, myFileName, settings);
        Process.Start(string.Format("\"{0}\"", myFileName));
    }
    else
    {
        (sender as StiExportService).Export(report);
    }
}
В web:

Код: Выделить всё

StiReportResponse.ResponseAsExcel2007(this, report)
Спасибо.
Это нужно сделать из кода отчета без изменения кода winforms/

Спасибо.
Jan
Сообщения: 495
Зарегистрирован: 19 фев 2009, 11:14

Формирование отчета в Excel

Сообщение Jan »

Здравствуйте,

Напишите такой код в событии EndRenderEvent отчета:

Код: Выделить всё

this.ExportDocument(StiExportFormat.Excel, "d:\\test.xls");
Process.Start("d:\\test.xls");
Thank you.
Наталья
Сообщения: 110
Зарегистрирован: 19 фев 2009, 06:37

Формирование отчета в Excel

Сообщение Наталья »

Jan писал(а):
Process.Start("d:\\test.xls");
Не срабатывает.

Если пробовать без этой строчки, при открытии сформированного документа, приходится форматировать ячейки вручную (для отображения данных в ячейке полностью), возможно ли выставить автоматичекое форматирование при выгрузке?

Спасибо.
Edward
Сообщения: 930
Зарегистрирован: 09 июн 2006, 12:23

Формирование отчета в Excel

Сообщение Edward »

Здравствуйте,

Вы не могли бы уточнить, что значит 'для отображения данных в ячейке полностью'? Происходит обрезка текста в ячейке?

Если проблема с датами, то эта информация решит проблему:

При экспорте в Excel по умолчанию дата и время экспортируются как текст,
хотя формат ячейки и установлен в Date или Time.
Это связано с тем, что в отрендеренном отчете дата и время хранятся в виде текстовых строк.
Можно включить экспорт этих величин с помощью статического свойства:
StiOptions.Export.Excel.AllowExportDateTime = true;

При экспорте будет происходить парсинг текстовых строк следующим кодом:
DateTime dt = DateTime.Parse(value, CultureInfo.InstalledUICulture);
и далее полученные величины будут записаны в Excel в формате по умолчанию.
Поэтому для правильного парсинга необходимо позаботиться, чтобы в текстовых строках
дата и время были записаны с теми региональными настройками, которые используются в системе.

Спасибо.
Наталья
Сообщения: 110
Зарегистрирован: 19 фев 2009, 06:37

Формирование отчета в Excel

Сообщение Наталья »

Я, видимо, не верно сформулировала вопрос.
Данные выводятся все, только ячейки сжатые и данные отображаются в виде "###", приходится вручную растягивать ячейки. Возможно ли сформировать файл с автоматиски растянутыми ячейками?

И как все-таки сделать, чтобы заработало Process.Start("d:\\test.xls")?

спасибо.
Edward
Сообщения: 930
Зарегистрирован: 09 июн 2006, 12:23

Формирование отчета в Excel

Сообщение Edward »

Здравствуйте,

Вы не могли бы выслать шаблон Вашего отчета (mrt файл) и построенный отчет (mdc файл, можно сохранить в preview) на support@stimulsoft.com для анализа этой проблемы.

Проверьте, пожалуйста, что файл 'test.xls' создается и находится на d: (местоположение не принципиально, главное чтобы программа имела доступ к сгенерированному файлу)

Process.Start("d:\\test.xls")

Получаете лы Вы сообщение об ошибке?

Спасибо.
Наталья
Сообщения: 110
Зарегистрирован: 19 фев 2009, 06:37

Формирование отчета в Excel

Сообщение Наталья »

1. В событие EndRenderEvent отчета добавляю код:

this.ExportDocument(StiExportFormat.Excel, "C:\\test.xls");
Process.Start("C:\\test.xls");

Отчет не строится, выводится ошибка:

c:\Documents and Settings\Natalya\Local Settings\Temp\s5a0owzv.0.cs(211,1) : error CS0103: The name 'Process' does not exist in the current context

2. Если строку

Process.Start("C:\\test.xls");

закоментировать, отчет строится. Файл test.xls сохраняется на указанный диск, но автоматичеки не открывается.

3. Шаблон отчета (mrt файл), построенный отчет (mdc файл) и xls файл выслала на указанный ящик.

Спасибо.
stromann
Сообщения: 16
Зарегистрирован: 19 янв 2010, 06:59
Откуда: St Petersburg

Формирование отчета в Excel

Сообщение stromann »

NatNiM, попробуйте написать вместо Process.Start(...) это:

System.Diagnostics.Process.Start("C:\\terst.xls");
Ответить