예제 #1
0
        /// <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()));
                }
            }
        }
예제 #2
0
        /// <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()));
                }
            }
        }
예제 #3
0
        /// <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()));
            }
        }
예제 #4
0
 /// <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());
         }
     }
 }