使用Epplus以及Excel將模板導出excel


1、核心邏輯(為了測試方便,路徑直接寫死了):

public static void TemplateWrite<T>(List<T> datas, int startRow = 2, string targetPath = @"D:\導出excel測試.xlsx", string templatePath = @"D:\github\Demo\NetCoreDemo\src\ExcelDemo\Template\template.xlsx")
        {
            var stream = FileToStream(templatePath);

            using (ExcelPackage package = new OfficeOpenXml.ExcelPackage(stream))
            {
//注意:引用的如果是Epplus.core。sheet是從1開始的,如果引用的是Epplus,sheet是從0開始的。 ExcelWorksheet worksheet
= package.Workbook.Worksheets[1];
startRow
= 3; Type myType = typeof(T); var pros = myType.GetProperties(); foreach (var data in datas) { worksheet.Cells.AutoFitColumns();//自適應寬度 var column = 1; foreach (var item in pros) { //遍歷賦值:前提是要順序一致。 var value = item.GetValue(data, null); worksheet.Cells[startRow, column].Value = value; column++; } startRow++; } FileInfo fs = new FileInfo(targetPath); package.SaveAs(fs); } }

2、測試Model

  public class Students
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public int ClassNum { get; set; }
        public decimal Math { get; set; }
        public decimal Lang { get; set; }
        public string dec { get; set; }
    }

3、模板

 

 4、調用方法:

 static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            List<Students> students = new List<Students>();
            students.Add(new Students() { Name = "張三", Age = 5, ClassNum = 6, Lang = 90, Math = 89,dec= "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd" });
            students.Add(new Students() { Name = "李四", Age = 8, ClassNum = 5, Lang = 70, Math = 99, dec = "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd" });

            EpplusExcelHelper.TestTemplateWrite(students);
        }

5、運行,查看運行結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM