Как экспортировать отчёт без разбиения на стрницы?
Есть отчёт, состоящий из PageHeaderBand, DataBand и PageFooterBand.
На PageHeaderBand печатается шапка таблицы, на PageFooterBand - номер страницы.
Пользователь получает этот отчёт либо в PDF - версия для печати, либо в XML - для последующего редактирования его в Excel.
При экспорте в PDF разбиение отчёта на страницы с печатью шапки таблицы вверху каждого листа и номера страницы внизу - вещь необходимая. Но при экспорте в Excel мне нужно вывести шапку таблицы только один раз, а номера страниц не выводить вообще.
Мой вопрос, как программно перед экспортом в Excel убрать из отчёта PageHeaderBand со всех страниц, кроме первой.
Или, что также решит мою проблему, как программно указать, что страница имеет бесконечную высоту.
Экспорт в Excel у меня осуществляется следующим образом:
protected void Page_Load(object sender, EventArgs e)
{
if(Page.ClientQueryString == "excel")
{
WebReport1.Prepare();
XMLExport export = new XMLExport();
MemoryStream stream = new MemoryStream();
WebReport1.Report.Export(export, stream);
WebReport1.Report.Dispose();
Response.Clear();
Response.ContentType = "text/xml";
Response.AddHeader("content-length", stream.Length.ToString());
Response.BinaryWrite(stream.ToArray());
Response.Flush();
stream.Close();
Response.End();
}
}
До выполнения WebReport1.Prepare() WebReport.Report есть null
Указание размера бумаги после WebReport1.Prepare()
ReportPage page = WebReport1.Report.FindObject("Page1") as ReportPage;
page.PaperHeight = 3000; // большое число
ни на что не влияет.
На PageHeaderBand печатается шапка таблицы, на PageFooterBand - номер страницы.
Пользователь получает этот отчёт либо в PDF - версия для печати, либо в XML - для последующего редактирования его в Excel.
При экспорте в PDF разбиение отчёта на страницы с печатью шапки таблицы вверху каждого листа и номера страницы внизу - вещь необходимая. Но при экспорте в Excel мне нужно вывести шапку таблицы только один раз, а номера страниц не выводить вообще.
Мой вопрос, как программно перед экспортом в Excel убрать из отчёта PageHeaderBand со всех страниц, кроме первой.
Или, что также решит мою проблему, как программно указать, что страница имеет бесконечную высоту.
Экспорт в Excel у меня осуществляется следующим образом:
protected void Page_Load(object sender, EventArgs e)
{
if(Page.ClientQueryString == "excel")
{
WebReport1.Prepare();
XMLExport export = new XMLExport();
MemoryStream stream = new MemoryStream();
WebReport1.Report.Export(export, stream);
WebReport1.Report.Dispose();
Response.Clear();
Response.ContentType = "text/xml";
Response.AddHeader("content-length", stream.Length.ToString());
Response.BinaryWrite(stream.ToArray());
Response.Flush();
stream.Close();
Response.End();
}
}
До выполнения WebReport1.Prepare() WebReport.Report есть null
Указание размера бумаги после WebReport1.Prepare()
ReportPage page = WebReport1.Report.FindObject("Page1") as ReportPage;
page.PaperHeight = 3000; // большое число
ни на что не влияет.
Комментарии
Экспорт можно сделать и без использования WebReport.
if(Page.ClientQueryString == "excel")
{
Report report = new Report();
report.Load(...);
report.RegisterData(...);
(report.FindObject("Page1") as ReportPage).PaperHeight = 3000; //в мм
XMLExport export = new XMLExport();
MemoryStream stream = new MemoryStream();
report.Export(export, stream);
...
Спасибо за ответ.
Да, но сам то отчёт хранится в WebReport1.ReportResourceString
Можно загрузить отчёт не из FRX-файла, а из WebReport1.ReportResourceString ?
Впрочем, свою проблему я уже решил через StartReport
protected void WebReport1_StartReport(object sender, EventArgs e)
{
if(Page.ClientQueryString == "excel")
{
ReportPage page = WebReport1.Report.FindObject("Page1") as ReportPage;
page.PaperHeight = 3000;
PageFooterBand footer = WebReport1.Report.FindObject("PageFooter1") as PageFooterBand;
footer.Delete();
}
}