分类:
ABP
1.数据导出为Excel的Stream
using System; using System.Collections.Generic; using System.IO; using Abp.Collections.Extensions; using OfficeOpenXml; using System.Web; using Abp.Web.Models; namespace Common.Exporting { public static class ExcelExporter<T> { /// <summary> /// 导出Excel文件 /// </summary> /// <returns></returns> public static AjaxResponse GetFileResponse(string fileName, string sheetName, IList<T> dtoList, string[] header, Func<T, object>[] propertySelectors) { AjaxResponse res = new AjaxResponse(); try { byte[] data = ExportExcelStream(sheetName, dtoList,header, propertySelectors); var Response = HttpContext.Current.Response; Response.ContentType = "applicationnd.ms - excel"; Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}", fileName)); Response.Clear(); Response.BinaryWrite(data); Response.End(); res.Success = true; } catch (Exception ex) { res.Success = false; res.Error = new ErrorInfo(); res.Error.Code = 500; res.Error.Message = "导出数据错误"; res.Error.Details = ex.ToString(); } return res; } public static byte[] ExportExcelStream(string sheetName, IList<T> dtoList, string[] header, Func<T, object>[] propertySelectors) { return CreateExcelStream( excelPackage => { var sheet = excelPackage.Workbook.Worksheets.Add(sheetName); sheet.OutLineApplyStyle = true; AddHeader(sheet, header); AddObjects(sheet, 2, dtoList, propertySelectors); for (var i = 1; i <= header.Length; i++) { sheet.Column(i).AutoFit(); } }); } public static byte[] CreateExcelStream(Action<ExcelPackage> creator) { using (var excelPackage = new ExcelPackage()) { creator(excelPackage); MemoryStream ms = new MemoryStream(); excelPackage.SaveAs(ms); return ms.GetBuffer(); } } public static void AddHeader(ExcelWorksheet sheet, params string[] headerTexts) { if (headerTexts.IsNullOrEmpty()) { return; } for (var i = 0; i < headerTexts.Length; i++) { AddHeader(sheet, i + 1, headerTexts[i]); } } public static void AddHeader(ExcelWorksheet sheet, int columnIndex, string headerText) { sheet.Cells[1, columnIndex].Value = headerText; sheet.Cells[1, columnIndex].Style.Font.Bold = true; } public static void AddObjects<T>(ExcelWorksheet sheet, int startRowIndex, IList<T> items, params Func<T, object>[] propertySelectors) { if (items.IsNullOrEmpty() || propertySelectors.IsNullOrEmpty()) { return; } for (var i = 0; i < items.Count; i++) { for (var j = 0; j < propertySelectors.Length; j++) { sheet.Cells[i + startRowIndex, j + 1].Value = propertySelectors[j](items[i]); } } } } }
2.在ABP的AppServer应用服务层调用:
/// <summary> /// 导出列表到Excel /// </summary> /// <param name="search">查询条件对象</param> public AjaxResponse ExportListToExcel(ContractSearch search) { int rowCount = 0; List<ContractList> dtoList = Search(search, out rowCount, false); string fileName = "List.xlsx"; string sheetName = "列表"; const int columnCount = 11; string[] header = new string[columnCount] { "签订日期", "编号", "价格", "付款方式", "执行期", "状态", "负责人" }; Func<ContractList, object>[] propertySelectors = new Func<ContractList, object>[columnCount] { new Func<ContractList, object>(l => l.SignDateString), new Func<ContractList, object>(l => l.Code), new Func<ContractList, object>(l => l.CoalType), new Func<ContractList, object>(l => l.TotalNumber), new Func<ContractList, object>(l => l.TotalAmount), new Func<ContractList, object>(l => l.PayMethods), new Func<ContractList, object>(l => l.ValidPeriod), new Func<ContractList, object>(l => l.ContractStatusName), new Func<ContractList, object>(l => l.AdminName) }; return ExcelExporter<ContractList>.GetFileResponse(fileName, sheetName, dtoList, header, propertySelectors); }
转载:https://www.cnblogs.com/xytmj/p/7607110.html
评价
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术