Добавить несколько отчетов Crystal Reports в ZIP-файл - PullRequest
0 голосов
/ 03 декабря 2011

Я пытаюсь экспортировать PDF-файлы из Crystal в потоки, затем я хочу добавить их (всего 7) в zip-файл с помощью библиотеки DotNetZip. Я просто пытаюсь добавить один ниже. У меня ощущение, что я далеко. Пожалуйста, помогите.

MemoryStream oStream;
CrystalDecisions.CrystalReports.Engine.ReportDocument rpt = new CrystalDecisions.CrystalReports.Engine.ReportDocument();

if (a2batch.Count > 0) // a2batch - My Crystal Datasource List
{
    rpt.Load(Server.MapPath("~\\Report\\Construction\\ScheduleA2.rpt"));
    rpt.SetDataSource(a2batch);
    oStream = (MemoryStream)rpt.ExportToStream(ExportFormatType.PortableDocFormat);
    using (ZipFile zipFile = new ZipFile())
    {
        zipFile.AddEntry("Report.pdf", oStream);
        zipFile.Save("Report.zip");
    }
}

1 Ответ

0 голосов
/ 03 декабря 2011

Код в вашем вопросе работает?Если это так, то, вероятно, проще всего просто открыть zip-файл при добавлении других потоков:

using (ZipFile zip = ZipFile.Read(ExistingZipFile)) 

Затем используйте тот же код, что и в вашем вопросе, чтобы добавить новый файл, а затем сохраните его с помощью:

zip.Save();

Вы можете добавлять и удалять файлы в существующий zip-архив по желанию.Если вы создаете все потоки одним и тем же методом, также можно просто добавить данные из нескольких потоков перед тем, как закрыть файл, то есть добавить несколько операторов zip.AddEntry друг за другом.

...