首页 > 其他分享 >epplus导出

epplus导出

时间:2023-07-25 10:36:18浏览次数:27  
标签:sheet string epplus propertySelectors 导出 static var fiord

调用方法

ExcelExporter.ToExcel<Output>(
Path,//路径
//文件名 增加guid防止扫文件
$"报表_{Name}{DateTime.Now.ToString("yyyy-MM-dd")}_{Guid.NewGuid().ToString()}.xlsx",
"报表",//标题
res.OrderBy(o => o.Name).ThenBy(o => o.No).ToList(),
new string[] {
	"标题","标题","标题",... 
},
new Func<Output, object>[] {
	l => l.Name,//部门
	l => l.TypeName,//型号
	...
}
);

  

 辅助类

    /// <summary>
    /// 导出
    /// </summary>
    public static class ExcelExporter
    {

        /// <summary>
        /// 导出根目录
        /// </summary>
        public const string RootFile = "Report";

        #region epplus
        /// <summary>
        /// 导出Excel文件 EPPLUS
        /// </summary>
        /// <returns></returns>
        public static string GetFileResponse<T>(string fiord, string newFile, string sheetName, IList<T> dtoList, string[] header, Func<T, object>[] propertySelectors)
        {
            try
            {
                return ExportExcelStream<T>(fiord, newFile, sheetName, dtoList, header, propertySelectors);
            }
            catch (Exception ex)
            {
                throw new UserFriendlyException(ResourceCode.State_500, ex.Message);
            }
        }

        private static string ExportExcelStream<T>(string fiord, string newFile, string sheetName, IList<T> dtoList, string[] header, Func<T, object>[] propertySelectors)
        {
            return CreateExcelStream(fiord, newFile,
                    excelPackage =>
                    {
                        var sheet = excelPackage.Workbook.Worksheets.Add(sheetName);
                        sheet.OutLineApplyStyle = true;
                        AddHeader(sheet, header);
                        AddObjects(sheet, 2, dtoList, propertySelectors); 
                    });
        }

        private static string CreateExcelStream(string fiord, string newFile, Action<ExcelPackage> creator)
        {
            if (!Directory.Exists(fiord))
            {
                Directory.CreateDirectory(fiord);
            }
            var filePath = Path.Combine(fiord, newFile);
            var file = new FileInfo(filePath);

            using (var excelPackage = new ExcelPackage(file))
            {
                creator(excelPackage);
                excelPackage.Save();
            }
            return newFile;
        }

        private 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]);
            }
        }

        private static void AddHeader(ExcelWorksheet sheet, int columnIndex, string headerText)
        {
            sheet.Cells[1, columnIndex].Value = headerText;
            sheet.Cells[1, columnIndex].Style.Font.Bold = true;
        }

        private 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++)
            {
                sheet.Row(i + startRowIndex).CustomHeight = true;
                for (var j = 0; j < propertySelectors.Length; j++)
                {
                    sheet.Cells[i + startRowIndex, j + 1].Value = propertySelectors[j](items[i]);
                    //sheet.Column(j + 1).AutoFit();
                }
            }
        }


        #endregion epplus

        /// <summary>
        /// 下载
        /// </summary>
        /// <returns></returns>
        public static string ToExcel<T>(string rootPath, string fileName, string sheelName,
            List<T> list, string[] header, params Func<T, object>[] func)
        {
            var dt = DateTime.Now.ToString("yyyyMMdd");
            var path = Path.Combine(
                    Path.Combine(rootPath, RootFile),
                    dt
                );
            var filePath = GetFileResponse(path, fileName, sheelName, list, header, func);
            //获取当前网站链接//拼接起来

            return Path.Combine(RootFile, dt,  filePath);
        }

    }

 

标签:sheet,string,epplus,propertySelectors,导出,static,var,fiord
From: https://www.cnblogs.com/jiamiemie/p/17579014.html

相关文章

  • hive表数据导出
      第二种,是放到了本地的不是放在HFDS里的......
  • Apache POI excel导出(单元格html代码渲染)
    需求:将渲染后的html代码,导出到单元格中。依赖<dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.8.2</version></dependency>代码实现publicclassExcelUtil{/***设置单元格......
  • Springboot 整合mybatis 加导出excel
    快速写一个springboot,mybatis的demo,最后用excel导出。第一步,创建一个新maven命名就按自己的来啦第二步,配置pom文件<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version&g......
  • .net webapi导出excel
    publicIActionResultdownloadWeeklyTemplate(){stringbasePath=AppDomain.CurrentDomain.BaseDirectory;stringpath=basePath+"/excel.xlsx";varf=newFileInfo(path);if(!f.Exists......
  • 如何导出 1Password 密码库拷贝到另个1password账户
    导出目前登录名为1pass账户选择所有项目-》导出-》你的账号名导出格式选择1PUX会出现一个名为1PasswordExport-TCETPFBRCREDJF7UKOT3TY2BCE-20230723-133048.1pux文件导入目前登录名为2pass账户选择导入-》从文件选择刚刚生成的名为1PasswordExport-TCETPFBRCREDJF7UK......
  • 在mysql底下导出表数据
    在MySQL数据库中导出表数据是一个常见的任务,它允许我们将表数据以可移植的方式保存到文件中,以便在需要时重新导入到数据库中。这对于数据备份、数据迁移和与其他数据库系统的交互非常有用。在MySQL中,我们可以使用mysqldump命令来导出表数据。这是一个命令行工具,可以在终端中使用。......
  • Mysql 命令行方式导出数据文件
    概述Linux服务器上有一个数据库表包含大于50亿条的记录,通过Navicat等数据迁移工具,将数据迁移到另一个服务器相同表中,总是执行一段时间后卡死,故选择先导出数据文件,再去另一个服务器导入该文件。可以使用Navicat导出数据文件,也可以使用MySQL支持的命令导出数据文件。本文章介绍如何使......
  • 发现在elementui使用xlsx导出excel时会有重复的数据
    原因是由于elementui中的固定列产生的影响,doExportExcel(){//导出为excel    letwb=''    letxlsxParam={raw:true}    letfix=document.querySelector(".el-table__fixed-right")    if(fix){     wb=XLSX.uti......
  • mysql 导出数据分批
    MySQL导出数据分批实现步骤作为一位经验丰富的开发者,你需要教会一位刚入行的小白如何实现MySQL导出数据分批的功能。下面将详细介绍实现这一功能的步骤,并提供相应的代码示例。步骤概览首先,我们来看一下实现MySQL导出数据分批的整体流程。可以通过以下表格展示每个步骤所需的操作......
  • C# 使用EPPlus 操作excel The given key '8' was not present in the dictionary.
    使用EPPlus删除excel中某一个sheet中的几列的时候,出现了Thegivenkey'8'wasnotpresentinthedictionary.的报错;最开始的写法,是从前往后删除,出现错误//ExcelWorksheetsheet=package.Workbook.Worksheets[i];//sheet.DeleteCol......