/// <summary> /// Saves all the components back into the package. /// This method recursively calls the Save method on all sub-components. /// We close the package after the save is done. /// </summary> public void Save() { try { if (_stream is MemoryStream && _stream.Length > 0) { //Close any open memorystream and "renew" then. This can occure if the package is saved twice. //The stream is left open on save to enable the user to read the stream-property. //Non-memorystream streams will leave the closing to the user before saving a second time. CloseStream(); } Workbook.Save(); if (File == null) { if (Encryption.IsEncrypted) { var ms = new MemoryStream(); _package.Save(ms); byte[] file = ms.ToArray(); EncryptedPackageHandler eph = new EncryptedPackageHandler(); var msEnc = eph.EncryptPackage(file, Encryption); CopyStream(msEnc, ref _stream); } else { _package.Save(_stream); } _stream.Flush(); _package.Close(); } else { if (System.IO.File.Exists(File.FullName)) { try { System.IO.File.Delete(File.FullName); } catch (Exception ex) { throw (new Exception(string.Format("Error overwriting file {0}", File.FullName), ex)); } } _package.Save(_stream); _package.Close(); if (Stream is MemoryStream) { var fi = new FileStream(File.FullName, FileMode.Create); //EncryptPackage if (Encryption.IsEncrypted) { byte[] file = ((MemoryStream)Stream).ToArray(); EncryptedPackageHandler eph = new EncryptedPackageHandler(); var ms = eph.EncryptPackage(file, Encryption); fi.Write(ms.ToArray(), 0, (int)ms.Length); } else { fi.Write(((MemoryStream)Stream).ToArray(), 0, (int)Stream.Length); } fi.Close(); fi.Dispose(); } else { System.IO.File.WriteAllBytes(File.FullName, GetAsByteArray(false)); } } } catch (Exception ex) { if (File == null) { throw; } else { throw (new InvalidOperationException(string.Format("Error saving file {0}", File.FullName), ex)); } } }
/// <summary> /// Saves all the components back into the package. /// This method recursively calls the Save method on all sub-components. /// We close the package after the save is done. /// </summary> public void Save() { try { Workbook.Save(); if (File == null) { if (Encryption.IsEncrypted) { #if !MONO var ms = new MemoryStream(); _package.Save(ms); byte[] file = ms.ToArray(); EncryptedPackageHandler eph = new EncryptedPackageHandler(); var msEnc = eph.EncryptPackage(file, Encryption); CopyStream(msEnc, ref _stream); #endif #if MONO throw new NotSupportedException("Encryption is not supported under Mono."); #endif } else { _package.Save(_stream); } _stream.Flush(); _package.Close(); } else { if (System.IO.File.Exists(File.FullName)) { try { System.IO.File.Delete(File.FullName); } catch (Exception ex) { throw (new Exception(string.Format("Error overwriting file {0}", File.FullName), ex)); } } _package.Save(_stream); _package.Close(); if (Stream is MemoryStream) { var fi = new FileStream(File.FullName, FileMode.Create); //EncryptPackage if (Encryption.IsEncrypted) { #if !MONO byte[] file = ((MemoryStream)Stream).ToArray(); EncryptedPackageHandler eph = new EncryptedPackageHandler(); var ms = eph.EncryptPackage(file, Encryption); fi.Write(ms.GetBuffer(), 0, (int)ms.Length); #endif #if MONO throw new NotSupportedException("Encryption is not supported under Mono."); #endif } else { fi.Write(((MemoryStream)Stream).GetBuffer(), 0, (int)Stream.Length); } fi.Close(); } else { System.IO.File.WriteAllBytes(File.FullName, GetAsByteArray(false)); } } } catch (Exception ex) { if (File == null) { throw; } else { throw (new InvalidOperationException(string.Format("Error saving file {0}", File.FullName), ex)); } } }
/// <summary> /// Saves all the components back into the package. /// This method recursively calls the Save method on all sub-components. /// We close the package after the save is done. /// </summary> public void Save() { try { Workbook.Save(); if (File == null) { _stream = _package.Save(); _package.Close(); } else { if (System.IO.File.Exists(File.FullName)) { try { System.IO.File.Delete(File.FullName); } catch (Exception ex) { throw (new Exception(string.Format("Error overwriting file {0}", File.FullName), ex)); } } if (Stream is MemoryStream) { _package.Close(); _stream = _package.Save(); var fi = new FileStream(File.FullName, FileMode.Create); //EncryptPackage if (Encryption.IsEncrypted) { byte[] file = ((MemoryStream)Stream).ToArray(); EncryptedPackageHandler eph = new EncryptedPackageHandler(); var ms = eph.EncryptPackage(file, Encryption); fi.Write(ms.GetBuffer(), 0, (int)ms.Length); } else { fi.Write(((MemoryStream)Stream).GetBuffer(), 0, (int)Stream.Length); } fi.Close(); } else { System.IO.File.WriteAllBytes(File.FullName, GetAsByteArray(false)); } } } catch (Exception ex) { if (File == null) { throw (ex); } else { throw (new InvalidOperationException(string.Format("Error saving file {0}", File.FullName), ex)); } } }
/// <summary> /// Saves all the components back into the package. /// This method recursively calls the Save method on all sub-components. /// We close the package after the save is done. /// </summary> public void Save() { if (_stream is MemoryStream && _stream.Length > 0) { //Close any open memorystream and "renew" then. This can occure if the package is saved twice. //The stream is left open on save to enable the user to read the stream-property. //Non-memorystream streams will leave the closing to the user before saving a second time. CloseStream(); } Workbook.Save(); if (File == null) { if (Encryption.IsEncrypted) { #if !MONO var ms = new MemoryStream(); _package.Save(ms); byte[] file = ms.ToArray(); EncryptedPackageHandler eph = new EncryptedPackageHandler(); var msEnc = eph.EncryptPackage(file, Encryption); CopyStream(msEnc, ref _stream); #endif #if MONO throw new NotSupportedException("Encryption is not supported under Mono."); #endif } else { _package.Save(_stream); } _stream.Flush(); _package.Close(); } else { if (System.IO.File.Exists(File.FullName)) { System.IO.File.Delete(File.FullName); } _package.Save(_stream); _package.Close(); if (Stream is MemoryStream) { var fi = new FileStream(File.FullName, FileMode.Create); //EncryptPackage if (Encryption.IsEncrypted) { #if !MONO byte[] file = ((MemoryStream)Stream).ToArray(); EncryptedPackageHandler eph = new EncryptedPackageHandler(); var ms = eph.EncryptPackage(file, Encryption); fi.Write(ms.GetBuffer(), 0, (int)ms.Length); #endif #if MONO throw new NotSupportedException("Encryption is not supported under Mono."); #endif } else { fi.Write(((MemoryStream)Stream).GetBuffer(), 0, (int)Stream.Length); } fi.Dispose(); } else { System.IO.File.WriteAllBytes(File.FullName, GetAsByteArray(false)); } } }