Экспорт в Excel из Crystal Reports без верхних/нижних колонтитулов страниц

#c# #crystal-reports

Вопрос:

Просто интересно, был ли у кого-нибудь пример рабочего кода (на c#) для экспорта отчета crystal в Excel из приложения .NET без верхних и нижних колонтитулов страницы отчета.

Я использую среду выполнения crystal reports v9.

Комментарии:

1. если вам нужен ответ, я потрачу щедрую награду…?

Ответ №1:

Для этого вам действительно нужно сделать это в Crystal Report. Моя рекомендация состоит в том, чтобы добавить в него параметр, а затем отредактировать формулы подавления верхнего и нижнего колонтитулов, чтобы проверить параметр. Вот как мы этого добились. Если есть способ сделать это из вашего кода, мне было бы также интересно узнать об этом.

Удачи!

Комментарии:

1. Нет необходимости добавлять параметр, вы можете программно подавить верхний и нижний колонтитулы перед экспортом.

2. Я знаю, что прошло много времени, но как ты предлагаешь это сделать? Я пытаюсь сделать именно это, но не могу понять, как перевести это в код…

3. @K09P Извините, я не мог вам сказать, прошло несколько лет с тех пор, как я касался Crystal Reports.

4. Я думал, что ты не сможешь, но попробовать стоило. На самом деле я в конечном итоге нашел другой способ сделать это. Но в любом случае спасибо 🙂

5. Нет необходимости в параметре, есть псевдофункция Номер страницы. Просто используйте «Номер страницы > 1» в качестве условия подавления заголовка.

Ответ №2:

Здесь мой метод расширения для ReportDocument для подавления всех верхних/нижних колонтитулов. Я использую его для экспорта в Excel.

 /// <summary>
/// Clears header/footer.
/// </summary>
/// <param name="rpt">The reportdocument</param>
public static void ClearReportHeaderAndFooter(this ReportDocument rpt)
{
    foreach (Section section in rpt.ReportDefinition.Sections)
    {
        if (section.Kind == AreaSectionKind.ReportHeader || section.Kind == AreaSectionKind.ReportFooter || section.Kind == AreaSectionKind.PageFooter || section.Kind == AreaSectionKind.PageHeader)
        {
            section.SectionFormat.EnableSuppress = true;
            section.SectionFormat.BackgroundColor = Color.White;
            foreach (var repO in section.ReportObjects)
            {
                if (repO is ReportObject)
                {
                    var reportObject = repO as ReportObject;
                    reportObject.ObjectFormat.EnableSuppress = true;

                    reportObject.Border.BorderColor = Color.White;
                }
            }
        }
    }
}
 

Используйте его вот так:

 myReportDocument.ClearReportHeaderAndFooter();