【问题标题】:Export DataList to Excel using Asp.net core使用 Asp.net core 将 DataList 导出到 Excel
【发布时间】:2018-01-25 16:01:12
【问题描述】:

我想将数据列表导出为 Excel 格式,但我找不到任何第三方库或任何参考。我正在.net core 上构建我的项目。任何一位专家在这里提出任何解决方案。谢谢

【问题讨论】:

    标签: asp.net-core asp.net-core-mvc export-to-excel


    【解决方案1】:

    如果跨平台(Windows、Linux、Mac)是您主要关心的问题,那么您必须使用一些“预发布”的东西。

    .NET Core 对 OpenXML 的支持存在问题,可用于创建 Open XML Office 文档(例如 XLSX),(https://github.com/OfficeDev/Open-XML-SDK/issues/65)。在准备好之前必须完成一些工作。

    有人也有您的需求,并将其移植到 .NET Core 并在 GitHub (https://github.com/xrkolovos/Open-XML-SDK-for-NET-Platform-Standard) 上发布了他的项目。我自己没有尝试过,但可能值得一试。

    如果您的应用程序仅在 Windows 上运行,那么您可以在完整的 .NET 框架(使用用于创建 Excel 的知名第三方库)之上构建您的 ASP.NET Core 项目。

    【讨论】:

    • 感谢您的回复,但在我使用 .net 核心平台的工作项目中,我必须添加导出 excel 功能,但我无法获得任何解决方案。
    【解决方案2】:

    我差不多 7 个月前发布了这个问题,我找到了解决方案,所以我想分享它。

    在 project.json 上添加 "PdfRpt.Core": "1.0.0-*"

    在控制器上

    [HttpGet("exportexcell")]
        public async Task<FileContentResult> ExportExcel()
        {
            var loggedUser = await GetCurrentUserAsync();
            var users = _userManager.Users.Select(u => new UserListVM
            {
                Id = u.Id,
                Name = u.UserName,
                Email = u.Email
            }).ToList();
    
            if (users == null) return null;
    
            //column Header name
            var columnsHeader = new List<string>{
                "S/N",
                "User Name",
                "Email"
            };
            var filecontent = ExportExcell(users, columnsHeader, "Users");
            return File(filecontent, "application/ms-excel", "users.xlsx"); ;
        }
    

    辅助方法

     private static byte[] ExportExcell(List<UserListVM> data, List<string> columns, string heading)
        {
            byte[] result = null;
    
            using (ExcelPackage package = new ExcelPackage())
            {
                // add a new worksheet to the empty workbook
                var worksheet = package.Workbook.Worksheets.Add(heading);
                using (var cells = worksheet.Cells[1, 1, 1, 7])
                {
                    cells.Style.Font.Bold = true;
                    cells.Style.Fill.PatternType = ExcelFillStyle.Solid;
                    cells.Style.Fill.BackgroundColor.SetColor(Color.Green);
                }
                //First add the headers
                for (int i = 0; i < columns.Count(); i++)
                {
                    worksheet.Cells[1, i + 1].Value = columns[i];
                }
    
                //Add values
                var j = 2;
                var count = 1;
                foreach (var item in data)
                {
                    worksheet.Cells["A" + j].Value = count;
                    worksheet.Cells["B" + j].Value = item.Name;
                    worksheet.Cells["C" + j].Value = item.Email;
                    worksheet.Cells["D" + j].Value = item.RoleNam
    
                    j++;
                    count++;
                }
                result = package.GetAsByteArray();
            }
    
            return result;
        }
    

    //它对我来说很好..它也可能对你有帮助。

    你可以找到演示here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-10
      • 1970-01-01
      • 1970-01-01
      • 2019-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-30
      相关资源
      最近更新 更多