using FineUIPro;
|
using iWareExcel.EXCEL.Entity;
|
using iWareExcel.Utils;
|
using System.Collections.Generic;
|
using System.IO;
|
using System.Text;
|
using System.Web;
|
namespace iWareWms.Code.Excel.Service
|
{
|
/// <summary>
|
/// Excel服务
|
/// </summary>
|
public class ExcelService
|
{
|
private static object Lock = new object();
|
|
private ExcelService() { }
|
|
private static ExcelService Instance = null;
|
|
/// <summary>
|
/// 获取单例的方法
|
/// </summary>
|
/// <returns>菜单服务的单例实体</returns>
|
public static ExcelService GetInstance()
|
{
|
if (Instance == null)
|
{
|
lock (Lock)
|
{
|
if (Instance == null)
|
{
|
Instance = new ExcelService();
|
}
|
}
|
}
|
return Instance;
|
}
|
|
public string ToExcel(WorkBookEntity workBook, Dictionary<string, List<object>> datas, out string msg)
|
{
|
var path = ExcelHelper.ToExcelByEPPlus(workBook, datas, out msg);
|
|
if (!string.IsNullOrEmpty(msg))
|
{
|
Alert.ShowInTop(msg);
|
return "";
|
}
|
return path;
|
}
|
|
public string ToExcelByEPPlus(WorkBookEntity workBook, Dictionary<string, List<object>> datas, out string msg)
|
{
|
var path = ExcelHelper.ToExcelByEPPlus(workBook, datas, out msg);
|
|
if (!string.IsNullOrEmpty(msg))
|
{
|
Alert.ShowInTop(msg);
|
return "";
|
}
|
return path;
|
}
|
|
public void OutputClient(FileInfo file)
|
{
|
HttpResponse response = HttpContext.Current.Response;
|
response.Buffer = true;
|
response.Clear();
|
response.ClearHeaders();
|
response.ClearContent();
|
|
|
//导出到 .xlsx 格式不能用时,可以试试这个
|
HttpContext.Current.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
|
|
response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", file.Name));
|
|
response.Charset = "GB2312";
|
response.ContentEncoding = Encoding.GetEncoding("GB2312");
|
|
response.AddHeader("Content-Length", file.Length.ToString());
|
|
response.WriteFile(file.FullName);
|
response.Flush();
|
|
response.Close();
|
|
}
|
}
|
}
|