2017-03-10 10 views
0

私はExcelファイルとして書き出したいhtmlコンテンツを持っています。私のエクスポート機能は次のようになります:MVCを貼り付けるHTMLを

public ActionResult ExportToExcel(string htmlToExport) 
{ 
    using (ExcelPackage ep = new ExcelPackage()) 
    { 
    string fileTemplate = "test.xlsx"; 

    using (FileStream stream = new FileStream(HttpContext.Server.MapPath("~/") + ConfigurationManager.AppSettings["templatePath"] + fileTemplate, FileMode.Open)) 
    { 
     ep.Load(stream); 
    } 

    ExcelWorksheet ws = ep.Workbook.Worksheets.First(); 

    Response.AppendHeader("Content-Disposition", fileTemplate); 
    return File(ep.GetAsByteArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); 

    } 
} 

htmlをExcelファイルに貼り付ける方法はありますか?これを手動で行うと、すべてがOKです。私はサーバー側でこれを行い、内部に貼り付けられたhtmlでファイルを返すようにしたいと思います。これは可能ですか?

+0

「貼り付けたHTML」とはどういう意味ですか、それはどういうわけではありませんか? – CodeCaster

+0

HTMLをコピーしてExcelファイルに貼り付けると、うまく見えます。私はコードでこれをしたいと思います。 – FrenkyB

答えて

1

もちろん可能です。私のコードサンプルは以下の通りです。

 public ActionResult BankAccountReport(BankAccountsInfoFilter bankAccountsInfoFilter) 
     {  
      var bankAccountInfos = service.GetBankAccounts(bankAccountsInfoFilter); 

      DetailReportExport(bankAccountInfos); 

      return new EmptyResult(); 
     } 

     [NonAction] 
     public void DetailReportExport(List<BankAccountViewModel> bankAccountInfos) 
     { 
      string html = RenderPartialViewToString("_BankAccountDetailReport", bankAccountInfos); 

      Response.ClearContent(); 
      Response.AddHeader("content-disposition", "attachment; filename=BankAccountInfoDetailReport.xls"); 
      Response.ContentType = "application/excel"; 
      Response.AddHeader("content-language", "tr-TR"); 
      Response.ContentEncoding = System.Text.Encoding.UTF8; 
      Response.BinaryWrite(System.Text.Encoding.UTF8.GetPreamble()); 
      Response.Write(html); 
     } 
+0

これは...保存されたファイルを開くときにのみ問題が警告です。拡張子が.xlsxの場合、何かを変更する必要がありますか? (もちろん、ファイル名の拡張子を変更しました)。 Xlsxを開くことはできません。 .xlsを正常に保存して開くことができます(警告付き)。 – FrenkyB

+0

はい、そうです。 –

関連する問題