XLSReport Hide headers and footers
Using XE2 with RB 14.08
I'm trying to hide the header band when the user exports the report to Excel
to the don't have to deal with the column headings, etc.
The code below doesn't work because the DeviceType is never set to
XLSReport. Is there another way to do this?
procedure TfrmPHHISTRS.rptPHHISTRFADHeaderBandBeforePrint(Sender: TObject);
begin
inherited;
if (uppercase(rptPHHISTRFAD.DeviceType) = 'XLSREPORT')
and (rptPHHISTRFAD.AbsolutePageNo <> 1) then
rptPHHISTRFADHeaderBand.Visible:=False
else
rptPHHISTRFADHeaderBand.Visible:=True;
end;
Thanks,
Perry Jacobs
I'm trying to hide the header band when the user exports the report to Excel
to the don't have to deal with the column headings, etc.
The code below doesn't work because the DeviceType is never set to
XLSReport. Is there another way to do this?
procedure TfrmPHHISTRS.rptPHHISTRFADHeaderBandBeforePrint(Sender: TObject);
begin
inherited;
if (uppercase(rptPHHISTRFAD.DeviceType) = 'XLSREPORT')
and (rptPHHISTRFAD.AbsolutePageNo <> 1) then
rptPHHISTRFADHeaderBand.Visible:=False
else
rptPHHISTRFADHeaderBand.Visible:=True;
end;
Thanks,
Perry Jacobs
This discussion has been closed.
Comments
The DeviceType is not updated by the print dialog. Try using the
Report.FileDevice property instead. Also, the Band.BeforePrint event
fires too late to hide the entire band. Try using the StartPage or
FileDeviceCreate event.
uses
ppXLSDevice;
procedure TForm1.ppReport1StartPage(Sender: TObject);
begin
if (ppReport1.FileDevice <> nil) and (ppReport1.FileDevice is
TppXLSReportDevice) then
ppReport1.HeaderBand.Visible := False
else
ppReport1.HeaderBand.Visible := True;
end;
Nico Cizik
Digital Metaphors
http://www.digital-metaphors.com
Here is the final code. I was pleasantly suprised when Sender worked in the
StartPage event to make this a generic function.
if (TppReport(Sender).FileDevice <> nil)
and (TppReport(Sender).FileDevice is TppXLSReportDevice) then
begin
TppReport(Sender).Footer.Visible:=False;
if (TppReport(Sender).AbsolutePageNo <> 1) then
TppReport(Sender).Header.Visible:=False
else
TppReport(Sender).Header.Visible:=True;
end
else
begin
TppReport(Sender).Header.Visible:=True;
TppReport(Sender).Footer.Visible:=True;
end;
Another piece that I needed was
TppReport(Sender).CachePages:=False;
This is because I made a button in the Preview Form and this forces the
report to regenerate with the new device (I'm guessing).
Are there any plans to add Header and Footer to the list of
XLSSettings.ExportComponents option?
Thanks,
Perry Jacobs
Excel device. When I generate the XLSReport from the Preview window, it
duplicates the 4-5 lines that would have been at the bottom of each page.
When I generate the XLSReport directly from Report.Print then the lines are
not duplicated. I tried doing a Viewer.Report.Reset but no luck.
TppReport(Viewer.Report).Reset;
TppReport(Viewer.Report).CachePages:=False;
Viewer.Report.DeviceType:=dtXLSReport;
Viewer.Report.TextFileName:=strFileName;
Viewer.Report.ShowPrintDialog:=False;
Viewer.Report.ShowCancelDialog:=False;
Viewer.Report.XLSSettings.MergeAdjacentCells:=False;
Viewer.Report.XLSSettings.ScaleToPageWidth:=True;
Viewer.Report.XLSSettings.ExportComponents:=[ecText,ecImage,ecRichText,ecBarCode,ecOther];
Viewer.Report.Print;
Thanks,
Perry
Please create a minimal example of this and send it in .zip format to
support@digital-metaphors.com and we'll take a look at it for you.
Nico Cizik
Digital Metaphors
http://www.digital-metaphors.com