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;
}
}
}