using Aspose.Cells; using OASystem.Domain.Entities.Business; using OASystem.Domain.Entities.Groups; using OASystem.Domain.ViewModels.Business; using OASystem.Infrastructure.Repositories.Business; using System.Web; namespace OASystem.API.OAMethodLib.ExcelOutput { public class Excel_BusConfItemList { private CommonBusRepository _busRep; private string url; private string path; public Excel_BusConfItemList() { _busRep = AutofacIocManager.Instance.GetService(); url = AppSettingsHelper.Get("ExcelBaseUrl"); path = AppSettingsHelper.Get("ExcelBasePath"); if (!System.IO.Directory.Exists(path)) { System.IO.Directory.CreateDirectory(path);//不存在就创建文件夹 } } public string Excel(Bus_ConfItemListInfo _entity) { if (!string.IsNullOrEmpty(_entity.ExcelPath)) { if (System.IO.File.Exists(_entity.ExcelPath)) { //存在 string fileUrl = url + path + _entity.ExcelPath; return fileUrl; } else { //不存在 return CreateExcel(_entity); } } else { return CreateExcel(_entity); } return ""; } private string CreateExcel(Bus_ConfItemListInfo _entity) { string sql = string.Format(@" Select * From( Select ROW_NUMBER() Over(order By Id desc) as RowNumber,riv.FullName as VendorName,rid.ItemName ,rit.TypeName as ItemTypeName,bci.[Count],bci.CurrCost as Price,bci.OpRemark as ItemRemark From Bus_ConfItemList as bcil With(Nolock) Inner Join Bus_ConfItem as bci With(Nolock) On bcil.Id=bci.ConfListId Inner Join Res_ItemDetail as rid With(Nolock) On bci.ItemId=rid.Id Inner Join Res_ItemType as rit With(Nolock) On rid.ItemTypeId=rit.Id Inner Join Res_ItemVendor as riv With(nolock) On rid.VendorId=riv.Id Where bcil.Id={0} ) as tb ", _entity.Id); List _confItemList = _busRep._sqlSugar.SqlQueryable(sql).ToList(); Grp_DelegationInfo _DelegationInfo = _busRep.Query(s => s.Id == _entity.Diid).First(); string diName = _DelegationInfo != null ? _DelegationInfo.TeamName : "未知团组" + _entity.Diid; WorkbookDesigner designer = new WorkbookDesigner(); designer.Workbook = new Workbook(AppSettingsHelper.Get("ExcelBasePath") + "Template/会务物料清单模板.xlsx"); designer.SetDataSource("Export", _confItemList); designer.SetDataSource("ExportDiName", diName); designer.SetDataSource("ExportOutputDt", DateTime.Now.ToString("yyyy-MM-dd")); designer.SetDataSource("ExportListRemark", _entity.Remark); designer.Process(); string fileName = "ConfItemList/" + HttpUtility.UrlEncode("会务物料清单") + "_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx"; designer.Workbook.Save(path + fileName); designer = null; _entity.ExcelPath = AppSettingsHelper.Get("ExcelFtpPath") + fileName; _busRep._sqlSugar.Updateable() .Where(s => s.Id == _entity.Id) .UpdateColumns(s => s.ExcelPath) .ExecuteCommand(); string fileUrl = url + _entity.ExcelPath; return fileUrl; } } }