Ошибка при запуске TFlexCelReport, который экспортирует в Excel - PullRequest
0 голосов
/ 27 июня 2019

Я пытаюсь экспортировать в Excel некоторые данные, используя TFlexCelReport TMS в Delphi 10.2, и получаю сообщение об ошибке, которое я не могу понять, как исправить. В более ранней версии Delphi (2007) и TMS все работало нормально. Данные извлекаются из базы данных, выполняется некоторое форматирование и создается файл XML. Затем, используя этот файл и файл шаблона xsl, я пытаюсь произвести вывод в Excel, но получаю сообщение об ошибке, в котором говорится, что «именованный диапазон MAIN в шаблоне Excel относится к DataTable« MAIN », который не определено. Убедитесь, что вы добавили набор данных с помощью метода FlexCelReport.AddTable. ' Я пытался добавить его, но это не помогает. Не уверен, смогу ли я прикрепить файл XML и шаблон, если какой-либо из них уместен.

Попытка добавления таблицы MAIN, но это не помогает. Это на Windows 10.

procedure TdmExport.RunReport(const ExportFileName: String);
var
    Report: TFlexCelReport;
    TemplateStream: TResourceStream;
    OutputStream: TFileStream;
begin
    Report := TFlexCelReport.Create(true);
    try
        Report.GetInclude := GetIncludes;
        Report.AddTable('cdsExport', cdsExport);

        TemplateStream := TResourceStream.Create(hinstance, 'CATATemplatesOnTheExe', RT_RCDATA);
        try
            OutputStream := TFileStream.Create(ExportFileName, fmCreate);
            try
                Report.Run(TemplateStream, OutputStream);  // when executing this I get the error
            finally
                OutputStream.Free;
            end;
        finally
            TemplateStream.Free;
        end;
    finally
        Report.Free;
    end;
end;

Должен получить файл Excel, отформатированный в соответствии с шаблоном, но я получил ошибку, о которой упоминал выше.

procedure TdmExport.RunReport(const ExportFileName: String);
var
    Report: TFlexCelReport;
    TemplateStream: TResourceStream;
    OutputStream: TFileStream;
begin
    Report := TFlexCelReport.Create(true);
    try
        Report.GetInclude := GetIncludes;
        Report.AddTable('cdsExport', cdsExport);

        TemplateStream := TResourceStream.Create(hinstance, 'CATATemplatesOnTheExe', RT_RCDATA);
        try
            OutputStream := TFileStream.Create(ExportFileName, fmCreate);
            try
                Report.Run(TemplateStream, OutputStream);  // when executing this I get the error
            finally
                OutputStream.Free;
            end;
        finally
            TemplateStream.Free;
        end;
    finally
        Report.Free;
    end;
end;

Ожидаемый результат - файл Excel, созданный с использованием cdsExport.xml и файла шаблона xsl. Вместо этого я получаю ошибку, о которой упоминал выше. Не уверен, если и как я могу прикрепить файлы xml и xsl, если это необходимо.

...