Esempio n. 1
0
        private void InjectData(FileInfo zipfile, Stream outStream)
        {
            // don't use ZipHelper.openZipFile here - see #59743
            ZipFile zip = new ZipFile(zipfile.FullName);

            try
            {
                ZipOutputStream zos = new ZipOutputStream(outStream);
                try
                {
                    //ZipEntrySource zipEntrySource = new ZipFileZipEntrySource(zip);
                    //var en =  zipEntrySource.Entries;
                    var en = zip.GetEnumerator();
                    while (en.MoveNext())
                    {
                        var ze = (ZipEntry)en.Current;
                        zos.PutNextEntry(new ZipEntry(ze.Name));
                        var       inputStream = zip.GetInputStream(ze);
                        XSSFSheet xSheet      = GetSheetFromZipEntryName(ze.Name);
                        if (xSheet != null)
                        {
                            SXSSFSheet sxSheet = GetSXSSFSheet(xSheet);
                            var        xis     = sxSheet.GetWorksheetXMLInputStream();
                            try
                            {
                                CopyStreamAndInjectWorksheet(inputStream, zos, xis);
                            }
                            finally
                            {
                                xis.Close();
                            }
                        }
                        else
                        {
                            CopyStream(inputStream, zos);
                        }
                        inputStream.Close();
                    }
                }
                finally
                {
                    zos.Close();
                }
            }
            finally
            {
                zip.Close();
            }
        }