C# 使用Epplus导出Excel [1]:导出固定列数据

 

C# 使用Epplus导出Excel [1]:导出固定列数据

C# 使用Epplus导出Excel [2]:导出动态列数据

C# 使用Epplus导出Excel [3]:合并列连续相同数据

C# 使用Epplus导出Excel [4]:合并指定行

C# 使用Epplus导出Excel [5]:样式

 

最近项目用Epplus导出Excel,感觉挺好用的,现在我梳理一下如何导出,运行项目是.net Framework控制台应用。

首先NuGet上安装Epplus

1、建一个实体Student

Student.cs

 public class Student
    {
        public String Name { get; set; }

        public String Code { get; set; }
    }

 

2、建一个导出类

ExcelExportDto.cs

 public class ExcelExportDto<T>
    {
        public ExcelExportDto(string columnName, Func<T, object> columnValue)
        {
            ColumnName = columnName;
            ColumnValue = columnValue;
        }
        public string ColumnName { get; set; }

        public Func<T, object> ColumnValue { get; set; }
    }

 

3、添加表头表体的类

EpplusHelper.cs

 public static class EpplusHelper
    {
        /// <summary>
        /// 添加表头
        /// </summary>
        /// <param name="sheet"></param>
        /// <param name="headerTexts"></param>
        public static void AddHeader(ExcelWorksheet sheet, params string[] headerTexts)
        {
            for (var i = 0; i < headerTexts.Length; i++)
            {
                AddHeader(sheet, i + 1, headerTexts[i]);
            }
        }

        /// <summary>
        /// 添加表头
        /// </summary>
        /// <param name="sheet"></param>
        /// <param name="columnIndex"></param>
        /// <param name="headerText"></param>
        public static void AddHeader(ExcelWorksheet sheet, int columnIndex, string headerText)
        {
            sheet.Cells[1, columnIndex].Value = headerText;
            sheet.Cells[1, columnIndex].Style.Font.Bold = true;
        }

        /// <summary>
        /// 添加数据
        /// </summary>
        /// <param name="sheet"></param>
        /// <param name="startRowIndex"></param>
        /// <param name="items"></param>
        /// <param name="propertySelectors"></param>
        public  static void AddObjects(ExcelWorksheet sheet, int startRowIndex, IList<Student> items, Func<Student, object>[] propertySelectors)
        {
            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]);
                }
            }
        }

4、在Main方法中写代码,导出Excel

class Program
    {
        static void Main(string[] args)
        {
            //获得数据
            List<Student> studentList = new List<Student>();
            for (int i = 0; i < 10; i++)
            {
                Student s = new Student();
                s.Code = "c" + i;
                s.Name = "s" + i;
                studentList.Add(s);
            }

            //创建excel
            string fileName = @"d:\" + "导出excel" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
            FileInfo newFile = new FileInfo(fileName);
            using (ExcelPackage package = new ExcelPackage(newFile))
            {
                List<ExcelExportDto<Student>> excelExportDtoList = new List<ExcelExportDto<Student>>();
                excelExportDtoList.Add(new ExcelExportDto<Student>("Code", _ => _.Code));
                excelExportDtoList.Add(new ExcelExportDto<Student>("Name", _ => _.Name));

                List<string> columnsNameList = new List<string>();
                List<Func<Student, object>> columnsValueList = new List<Func<Student, object>>();
                foreach (var item in excelExportDtoList)
                {
                    columnsNameList.Add(item.ColumnName);
                    columnsValueList.Add(item.ColumnValue);
                }

                ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Test");
                worksheet.OutLineApplyStyle = true;
                //添加表头
                EpplusHelper.AddHeader(worksheet, columnsNameList.ToArray());
                //添加数据
                EpplusHelper.AddObjects(worksheet, 2, studentList, columnsValueList.ToArray());
                package.Save();
            }
        }
    }

运行控制台应用,在D盘找到导出的excel文件并打开

完整代码详情请移步我的github:https://github.com/gordongaogithub/ExportExcelByEpplus.git

 

转载于:https://www.cnblogs.com/jishugaochao/p/10344912.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
protected void Button1_Click(object sender, EventArgs e) { System.Web.HttpContext curContext = System.Web.HttpContext.Current; if (dt != null) { string filename = "档案全宗"; string name1 = filename; filename = HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8); HttpResponse resp = System.Web.HttpContext.Current.Response; resp.Charset = "utf-8"; resp.Clear(); resp.AppendHeader("Content-Disposition", "attachment;filename=" + filename + ".xls"); resp.ContentEncoding = System.Text.Encoding.UTF8; resp.ContentType = "application/ms-excel"; string style ="<meta http-equiv=\"content-type\" content=\"application/ms-excel; charset=utf-8\"/>"+ "<style> .table{ font: 9pt Tahoma, Verdana; color: #000000; text-align:center; background-color:#8ECBE8; }.table td{text-align:center;height:21px;background-color:#EFF6FF;}.table th{ font: 9pt Tahoma, Verdana; color: #000000; font-weight: bold; background-color: #8ECBEA; height:25px; text-align:center; padding-left:10px;}</style>"; resp.Write(style); //resp.Write(ExportTable(list)); resp.Write("<table class='table'><tr><th>" +"文件标题"+ "</th><th>" + "档案类别" + "</th><th>" +"发文日期" + "</th><th>" +"文件链接" + "</th><th>" +"备注" + "</th></tr>"); //VideoList = (List<subShiyongModel>)Session["dbVideoList"]; for(int i=0;i<dt.Rows.Count;i++) { resp.Write("<tr><td>" + dt.Rows[i]["FileName"]+ "</td>"); resp.Write("<td>" +dt.Rows[i]["type"]+ "</td>"); resp.Write("<td>" + dt.Rows[i]["fromtime"].ToString()+ "</td>"); resp.Write("<td>" + dt.Rows[i]["url"]+ "</td>"); resp.Write("<td>" + dt.Rows[i]["beizhu"]+ "</td>"); resp.Write("</tr>"); } resp.Write("<table>"); resp.Flush(); resp.End(); }
你可以通过以下步骤使用 EPPlus数据数据导出Excel 中: 1. 连接数据库:使用 C# 中的 System.Data.SqlClient 命名空间和 SqlConnection 类连接数据库。 2. 执行 SQL 查询:使用 SqlCommand 类执行 SQL 查询,获取需要导出Excel数据。 3. 创建 Excel 文件:使用 EPPlus 创建一个新的 Excel 文件。 4. 添加工作表:使用 ExcelPackage.Workbook.Worksheets.Add() 方法添加一个新的工作表。 5. 添加表头使用 ExcelWorksheet.Cells[row, column].Value 属性将表头添加到工作表中。 6. 将数据添加到工作表中:使用 ExcelWorksheet.Cells[row, column].Value 属性将数据添加到工作表中。 7. 保存 Excel 文件:使用 EPPlus 中的 Save() 方法将 Excel 文件保存到磁盘。 下面是示意代码: using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand command = new SqlCommand("SELECT * FROM MyTable", connection); connection.Open(); SqlDataReader reader = command.ExecuteReader(); ExcelPackage.LicenseContext = LicenseContext.NonCommercial; using (ExcelPackage package = new ExcelPackage()) { ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Sheet1"); // Add headers worksheet.Cells[1, 1].Value = "Column 1"; worksheet.Cells[1, 2].Value = "Column 2"; worksheet.Cells[1, 3].Value = "Column 3"; // Add data int row = 2; while (reader.Read()) { worksheet.Cells[row, 1].Value = reader["Column1"]; worksheet.Cells[row, 2].Value = reader["Column2"]; worksheet.Cells[row, 3].Value = reader["Column3"]; row++; } // Save Excel file package.SaveAs(new FileInfo(@"C:\Temp\MyExcelFile.xlsx")); } }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值