Is it possible to name multiple sheets in Excel export?

LurkingKiwiLurkingKiwi Wellington, New Zealand
edited 10:15PM in FastReport VCL 5
When exporting to Excel 97/2000/XP using the option where each printed page becomes a new sheet in the Excel workbook (Data Grouping/Like the report), is there any way to name the sheets?
Currently they seem to be auto-numbered "Page 0", "Page 1" etc which must come from FastReport.
I have a report which generates 49 sheets, 1 per division, and it's really annoying to rename the output by hand!!

I have just tried Excel 2007 XML format (Split To Sheet/use report pages), which is similar but starts the number at "Page 1" :)

Comments

  • gpigpi
    edited 10:15PM
    FR doesn't have such feature. You need to modify FR's sources
  • LurkingKiwiLurkingKiwi Wellington, New Zealand
    edited 10:15PM
    gpi wrote: »
    FR doesn't have such feature. You need to modify FR's sources
    Thanks, I did try to find the code in FR which named the sheets but didn't succeed.
  • gpigpi
    edited 10:15PM
    For example for frxExportXLSX.pas:
    var
      f, i, j, k, l, x, y, dx, dy: Integer;
      Obj: TfrxIEMObject;
      r: TfrxRect;
      MCells: array of TRect; // merged cells
      StrList: TStrings;
      StylesMap: array of Integer;
      Pictures: TList; // of TfrxIEMObject
      s: string;
      ss: TStream; // xl/worksheets/sheetXXX.xml
      style: TfrxIEMStyle;
      rotor, td: string;
      TempThousandSeparator, TempDecimalSeparator: Char;
    begin
      WriteStr(FContentTypes, '<Override PartName="/xl/worksheets/sheet' + IntToStr(m.Index) +
        '.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml' +
        '.worksheet+xml"/>');
    
      if ReportPages and (ChunkSize = 0) and not SingleSheet then
        WriteStr(FWorkbook, Format('<sheet name="%s" sheetId="%d" r:id="rId%d"/>',
          [Report.PreviewPages.Page[m.Index - 1].Name, m.Index, m.Index], SetFormat))
      else
        WriteStr(FWorkbook, Format('<sheet name="Page %d" sheetId="%d" r:id="rId%d"/>',
          [m.Index, m.Index, m.Index], SetFormat));
    
  • Good evening, I want to find the setting to break the report into a sheet, how do I do it?

Leave a Comment