/// <summary> /// /// </summary> /// <param name="dataItems"></param> /// <param name="exporterHeaderFilter"></param> /// <returns></returns> public Task <byte[]> ExportAsByteArray(DataTable dataItems, IExporterHeaderFilter exporterHeaderFilter = null, int maxRowNumberOnASheet = 1000000) { var helper = new ExportHelper <DataTable>(); helper.ExcelExporterSettings.MaxRowNumberOnASheet = maxRowNumberOnASheet; helper.SetExporterHeaderFilter(exporterHeaderFilter); if (helper.ExcelExporterSettings.MaxRowNumberOnASheet > 0 && dataItems.Rows.Count > helper.ExcelExporterSettings.MaxRowNumberOnASheet) { using (helper.CurrentExcelPackage) { var ds = dataItems.SplitDataTable(helper.ExcelExporterSettings.MaxRowNumberOnASheet); var sheetCount = ds.Tables.Count; for (int i = 0; i < sheetCount; i++) { var sheetDataItems = ds.Tables[i]; helper.AddExcelWorksheet(); helper.Export(sheetDataItems); } return(Task.FromResult(helper.CurrentExcelPackage.GetAsByteArray())); } } else { using (var ep = helper.Export(dataItems)) { return(Task.FromResult(ep.GetAsByteArray())); } } }
/// <summary> /// 导出Excel /// </summary> /// <param name="dataItems">数据</param> /// <returns>文件二进制数组</returns> public Task <byte[]> ExportAsByteArray <T>(ICollection <T> dataItems) where T : class { var helper = new ExportHelper <T>(); if (helper.ExcelExporterSettings.MaxRowNumberOnASheet > 0 && dataItems.Count > helper.ExcelExporterSettings.MaxRowNumberOnASheet) { using (helper.CurrentExcelPackage) { var sheetCount = (int)(dataItems.Count / helper.ExcelExporterSettings.MaxRowNumberOnASheet) + ((dataItems.Count % helper.ExcelExporterSettings.MaxRowNumberOnASheet) > 0 ? 1 : 0); for (int i = 0; i < sheetCount; i++) { var sheetDataItems = dataItems.Skip(i * helper.ExcelExporterSettings.MaxRowNumberOnASheet) .Take(helper.ExcelExporterSettings.MaxRowNumberOnASheet).ToList(); helper.AddExcelWorksheet(); helper.Export(sheetDataItems); } return(Task.FromResult(helper.CurrentExcelPackage.GetAsByteArray())); } } else { using (var ep = helper.Export(dataItems)) { return(Task.FromResult(ep.GetAsByteArray())); } } }
/// <summary> /// 导出excel表头 /// </summary> /// <param name="items">表头数组</param> /// <param name="sheetName">工作簿名称</param> /// <returns></returns> public Task <byte[]> ExportHeaderAsByteArray(string[] items, string sheetName = "导出结果") { var helper = new ExportHelper <DataTable>(); var headerList = new List <ExporterHeaderInfo>(); for (var i = 1; i <= items.Length; i++) { var item = items[i - 1]; var exporterHeaderInfo = new ExporterHeaderInfo() { Index = i, DisplayName = item, CsTypeName = "string", PropertyName = item, ExporterHeaderAttribute = new ExporterHeaderAttribute(item) { }, }; headerList.Add(exporterHeaderInfo); } helper.AddExcelWorksheet(sheetName); helper.AddExporterHeaderInfoList(headerList); using (var ep = helper.ExportHeaders()) { return(Task.FromResult(ep.GetAsByteArray())); } }
/// <summary> /// 导出字节 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="dataItems"></param> /// <returns></returns> public Task<byte[]> ExportAsByteArray<T>(DataTable dataItems) where T : class { var helper = new ExportHelper<T>(); if (helper.ExcelExporterSettings.MaxRowNumberOnASheet > 0 && dataItems.Rows.Count > helper.ExcelExporterSettings.MaxRowNumberOnASheet) { using (helper.CurrentExcelPackage) { var ds = dataItems.SplitDataTable(helper.ExcelExporterSettings.MaxRowNumberOnASheet); var sheetCount = ds.Tables.Count; for (int i = 0; i < sheetCount; i++) { var sheetDataItems = ds.Tables[i]; helper.AddExcelWorksheet(); helper.Export(sheetDataItems); } return Task.FromResult(helper.CurrentExcelPackage.GetAsByteArray()); } } else { using (var ep = helper.Export(dataItems)) { return Task.FromResult(ep.GetAsByteArray()); } } }