using ICSharpCode.SharpZipLib.Zip; using System.Collections.Generic; using System.IO; namespace WLYD.Utility.File { /// <summary> /// 压缩文件 /// </summary> public static class ZipHelper { public static byte[] ZipExcel(List<OrderExport> list) { byte[] buffer = null; MemoryStream ms = new MemoryStream(); using (ZipFile file = ZipFile.Create(ms)) { file.BeginUpdate(); foreach (var o in list) { StreamDataSource ss = new StreamDataSource(o.Ms); file.Add(ss, o.Filename); } file.CommitUpdate(); buffer = new byte[ms.Length]; ms.Position = 0; ms.Read(buffer, 0, buffer.Length); //读取文件内容(1次读ms.Length/1024M) ms.Flush(); ms.Close(); } return buffer; } } public class StreamDataSource : IStaticDataSource { public byte[] bytes { get; set; } public StreamDataSource(MemoryStream ms) { bytes = ms.GetBuffer(); } public Stream GetSource() { Stream s = new MemoryStream(bytes); return s; } } public class OrderExport { public string Filename { get; set; } public MemoryStream Ms { get; set; } } }