2016-08-25 95 views

回答

3

如果交叉平臺(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 Framework(具有用於創建Excel的衆所周知的第三方庫)之上構建ASP.NET Core項目。

+0

感謝您的回覆,但在我的工作項目中使用.net核心平臺,其中我必須添加導出excel功能,但我無法獲得任何解決方案。 – Bharat

1

我已經發布這個問題差不多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"); ; 
    } 

helper方法

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

1

首先,THX爲您的工作。它幫助我走出現在:d

其次,你有一個錯誤在你的代碼演示

//First add the headers 
for (int i = 0; i < dataList.Count; i++) 
{ 
    worksheet.Cells[1, i + 1].Value = dataList[i]; 
} 

更換DataList控件與columnsHeader(您存儲的表頭)。像這樣:

//First add the headers 
for (int i = 0; i < columnsHeader.Count; i++) 
{ 
    worksheet.Cells[1, i + 1].Value = columnsHeader[i]; 
} 

乾杯!