using NPOI.HPSF; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using ProjectBase.Data.Logs; using System; using System.IO; namespace ProjectBase.Data.Excel { public interface IReportExport { void GenerateData(HSSFWorkbook templatebook); } public class ExcelHelper { private HSSFWorkbook hssfworkbook; private string Filename; private string Templatename; private IReportExport exportor; public void InitializeWorkbook() { string TemplatePath = string.Format("{0}", Templatename); FileStream file = new FileStream(@TemplatePath, FileMode.Open, FileAccess.Read); hssfworkbook = new HSSFWorkbook(file); //create a entry of DocumentSummaryInformation NPOI.HPSF.DocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation(); dsi.Company = "siasun"; hssfworkbook.DocumentSummaryInformation = dsi; //create a entry of SummaryInformation SummaryInformation si = PropertySetFactory.CreateSummaryInformation(); si.Subject = "Gem System"; hssfworkbook.SummaryInformation = si; } protected MemoryStream WriteToStream() { MemoryStream file = new MemoryStream(); hssfworkbook.Write(file); return file; } public ISheet PrintSheet() { return hssfworkbook.GetSheet(Templatename); } public void WriteToFile() { //删除文件 System.IO.File.Delete(Filename);// 删除文件 FileStream file = new FileStream(Filename, FileMode.Create); hssfworkbook.Write(file); file.Close(); // return file; } /// /// /// /// 导出的文件名 /// 模板文件路径 /// 适配器 public ExcelHelper(string filename, string templatefile, IReportExport exp) { Filename = filename; Templatename = templatefile; exportor = exp; } protected void GenerateData(HSSFWorkbook templatebook) { exportor.GenerateData(templatebook); } public bool ExportSheet() { try { InitializeWorkbook(); this.GenerateData(hssfworkbook); } catch (Exception ex) { LogHelper.log.Error(Templatename + "保存文档失败,失败原因为", ex); return false; } return true; } public bool Export() { try { InitializeWorkbook(); this.GenerateData(hssfworkbook); WriteToFile(); } catch (Exception ex) { LogHelper.log.Error(Templatename + "保存文档失败,失败原因为", ex); return false; } return true; } } }