2015-01-20 41 views
5

Sunucudaki bir klasöre başarıyla kaydettiğim bir excel dosyası oluşturmak için EPPlus kütüphanesini kullanıyorum.EPPlus kullanarak oluşturulduktan sonra Excel dosyasını indirme

Bu dosya yerel makineme nasıl indirilir?

Bu

benim kod İşte

public void CreateExcelFirstTemplate() 
{ 
    var fileName = "C:\ExcelDataTest\ExcellData.xlsx"; 
    var file = new FileInfo(fileName); 
    using (var package = new OfficeOpenXml.ExcelPackage(file)) 
    { 
     var worksheet = package.Workbook.Worksheets.FirstOrDefault(x => x.Name == "Attempts"); 
     worksheet = package.Workbook.Worksheets.Add("Assessment Attempts"); 
     worksheet.Row(1).Height = 20; 

     worksheet.TabColor = Color.Gold; 
     worksheet.DefaultRowHeight = 12; 
     worksheet.Row(1).Height = 20; 

     worksheet.Cells[1, 1].Value = "Employee Number"; 
     worksheet.Cells[1, 2].Value = "Course Code"; 

     var cells = worksheet.Cells["A1:J1"]; 
     var rowCounter = 2; 
     foreach (var v in userAssessmentsData) 
     { 
     worksheet.Cells[rowCounter, 1].Value = v.CompanyNumber; 
     worksheet.Cells[rowCounter, 2].Value = v.CourseCode; 

     rowCounter++; 
     } 
     worksheet.Column(1).AutoFit(); 
     worksheet.Column(2).AutoFit(); 


     package.Workbook.Properties.Title = "Attempts"; 
     package.Save(); 
    } 
} 
+0

sunucuda bu dosyayı kaydetmek istiyor musunuz yoksa sadece bunu her seferinde oluşturmak istediğinizi kullanıcı indirmeyi ister? –

+0

Kullanıcı her defasında bir indirme isteği istediğinde dosyayı oluşturmak istiyorum – Arianule

cevap

10

Eğer bu dosyayı her ürettiğini Eğer sunucusuna kaydetmek gerekmez rica:

public void CreateExcelFirstTemplate() 
{ 
     var fileName = "ExcellData.xlsx"; 
     using (var package = new OfficeOpenXml.ExcelPackage(fileName)) 
     { 
      var worksheet = package.Workbook.Worksheets.FirstOrDefault(x => x.Name == "Attempts"); 
      worksheet = package.Workbook.Worksheets.Add("Assessment Attempts"); 
      worksheet.Row(1).Height = 20; 

      worksheet.TabColor = Color.Gold; 
      worksheet.DefaultRowHeight = 12; 
      worksheet.Row(1).Height = 20; 

      worksheet.Cells[1, 1].Value = "Employee Number"; 
      worksheet.Cells[1, 2].Value = "Course Code"; 

      var cells = worksheet.Cells["A1:J1"]; 
      var rowCounter = 2; 
      foreach (var v in userAssessmentsData) 
      { 
      worksheet.Cells[rowCounter, 1].Value = v.CompanyNumber; 
      worksheet.Cells[rowCounter, 2].Value = v.CourseCode; 

      rowCounter++; 
      } 
      worksheet.Column(1).AutoFit(); 
      worksheet.Column(2).AutoFit(); 


      package.Workbook.Properties.Title = "Attempts"; 
      this.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 
      this.Response.AddHeader(
        "content-disposition", 
        string.Format("attachment; filename={0}", "ExcellData.xlsx")); 
      this.Response.BinaryWrite(package.GetAsByteArray()); 
     } 
}   
+0

Sizin tarafınızdan sağlanan örnek kodu kullanıyorum .. Ama bunu ajax çağrısı kullanarak arıyorum ve çalıştırdığımda, ajax hatasına gider ve excel'i indiremiyorum dosya. Şimdiden teşekkürler. –

+0

Dosya indirmek için ajax kullanmanıza gerek yoktur. Düzenli bir get/post yapın. Ayarladığımız İçerik Hedefi nedeniyle, tarayıcılar yanıtı doğru şekilde nasıl işleyeceğini (ekin indirilmesini) bilir. Bu üstbilgiyi buradan okuyabilirsiniz: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition –

1

dosyayı indirmek için örnek eylem olmasıdır. Gereksiniminize göre değiştirmek için çekinmeyin. Bunun yerine daha sonra bir dosya indirme tetiklemek için MVC eylemi FileResult veya FileContentResult kullanarak yayınlayabilirsiniz bir bayt dizisi döndürür package.GetAsByteArray() kullanabilirsiniz package.Save() kullanmanın

public FileActionResult DownloadMyFile() 
{ 
    var filePath = "C:\ExcelDataTest\ExcellData.xlsx"; 
    var fileName = "ExcellData.xlsx"; 
    var mimeType = "application/vnd.ms-excel"; 
    return File(new FileStream(filePath, FileMode.Open),mimeType, fileName); 
} 
5

. Bu yöntem, dosyayı önce sunucuya kaydetmeden indirmenize izin verecektir.