Здравствуйте!
Это никак не связано с отчётной системой. Вы, разумеется может сделать всё, что угодно.
Если у вас GUI приложение, то только так:
Код: Выделить всё
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Stimulsoft.Report;
using Stimulsoft.Report.Components;
using Stimulsoft.Report.Viewer;
namespace StiTest
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
string[] args = Environment.GetCommandLineArgs();
string param0 = string.Empty;
string param1 = string.Empty;
// проверим количество нужных входных параметров
if (args.Count() == 2)
{
param0 = args[0]; // 1-й параметр (имя исполняемого exe файла проекта)
param1 = args[1].ToUpper(); // 2-й параметр (реально наш первый входной параметр из командной строки)
}
//
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
// создаём форму
Form frmMain = new Form();
// проверяем нужное значение параметра командной строки
if (param1 == "NOGUI")
{
StiReport report = new StiReport();
report.Load("test.mrt");
StiViewerControl stiPreview = new StiViewerControl()
{
Dock = DockStyle.Fill,
Visible = true,
PreviewSettings = StiPreviewSettings.All,
ShowEditor = true,
IsEditorActivated = true,
ShowPageDesign = true
};
// assign report object to preview control
stiPreview.Report = report;
stiPreview.FirstPage();
stiPreview.SetZoom(100);
frmMain.Controls.Add(stiPreview); // add created preview control to the form
frmMain.WindowState = FormWindowState.Maximized; // set form maximized
// start report
report.Render();
}
Application.Run(frmMain);
}
}
}
Это связано с тем, что, даже если у вас, допустим консольное приложение, то нужно либо создавать какой-то поток, чтобы он "висел" и не завершал основной процесс, либо, как в описанном выше примере, у вас графическое приложение, но вы создаёте форму, загружаете отчёт, рендерите его, создаёт preview, который на форме, и выводите форму, а потом закрываете.
Если вам нужно просто отрендерить отчёт, всё так же используя командную строку, но даже без графики совсем, то так:
Код: Выделить всё
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Stimulsoft.Report;
using Stimulsoft.Report.Components;
using Stimulsoft.Report.Viewer;
namespace StiTest
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
string[] args = Environment.GetCommandLineArgs();
string param0 = string.Empty;
string param1 = string.Empty;
// проверим количество нужных входных параметров
if (args.Count() == 2)
{
param0 = args[0]; // 1-й параметр (имя исполняемого exe файла проекта)
param1 = args[1].ToUpper(); // 2-й параметр (реально наш первый входной параметр из командной строки)
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
// проверяем нужное значение параметра командной строки
if (param1 == "NOGUI")
{
StiReport report = new StiReport();
report.Load("test.mrt");
report.Render(false);
// делаем что-то с отчётом, например экспорт в Excel
}
// выход из приложения
}
}
}