2016-06-24 8 views
1

私はASP:テーブルをExcelにエクスポートする必要があるという問題があります。 Excelへのエクスポートは正常に機能するので、ここに私の現在のコードがあります。複数のExcelワークシートを持つASP.NET C#Excelエクスポータ

 string[] htmlTableString = generateHtmlTable(divs); 
     StringBuilder sb_ExcelData = new StringBuilder(); 
     sb_ExcelData.Append(@"<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:excel' xmlns='http://www.w3.org/TR/REC-html40'><head><title>KzB</title>"); 
     sb_ExcelData.Append(@"<body lang=EN-US style='mso-element:header' id=h1><span style='mso--code:DATE'></span><div class=Section1>"); 
     sb_ExcelData.Append("<DIV style='font-size:12px;'>"); 
     sb_ExcelData.Append(htmlTableString[0]); // HERE IS MY PROBLEM 
     sb_ExcelData.Append("</div></body></html>"); 
     string strFile = "Kzb_"+"Jahr_"+dd_Year.SelectedValue+ "_Export_" + DateTime.Now.Day.ToString() + "-" + DateTime.Now.Month.ToString() + "-" + DateTime.Now.Year.ToString() + ".xls"; 
     string strcontentType = "application/excel"; 
     Response.ClearContent(); 
     Response.ClearHeaders(); 
     Response.BufferOutput = true; 
     Response.ContentType = strcontentType; 
     Response.AddHeader("Content-Disposition", "attachment; filename=" + strFile); 
     Response.Write(sb_ExcelData.ToString()); 
     Response.Flush(); 
     Response.Close(); 
     Response.End(); 

コードには、[] htmlTableStringという文字列があります。私のASP:Table Contentがあります。今私はExcelで新しいシート/ワークシート/タブを含む各文字列を表示したいと思います。だから私はどのようにこの機能を得ることができますか?

私は多くを検索しましたが、私は外部ライブラリを使用したくありません。

答えて

1

Glix @Glixの情報を使用して可能性を作成しました EEPlus Libを使用して複数のワークシートを作成しました。このような方法でexmapleについては

private MemoryStream createMemoryStream(DataTable[] tables, int[] divs) 
     { 
      MemoryStream ms = new MemoryStream(); 
      ExcelPackage pck = new ExcelPackage(); 
      for (int i = 0; i < tables.Length; i++) 
      { 
       ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Division_" + divs[i].ToString()); 
       ws.Cells["A1"].LoadFromDataTable(tables[i], true); 
      } 
      pck.SaveAs(ms); 
      return ms; 
     } 

のMemoryStreamをResponse.BinaryWriteを使用することができます。このようにして、異なるタブ/ワークシートでExcelファイルをダウンロードすることができます。

0

私は、ASP.NETでExcelをエクスポートするためのさまざまな手動手法を試しました。私はこれまで、最も効率的なのはExcelファイルをOffice XML formatに作成していることです。これには、ダウンロード後に.xlsxファイルとして保存する必要があるという欠点があります。しかし、ファイルは非常に軽量であり、非常に迅速にダウンロードされます。 Office XML Excelファイルの構築方法については、step by step tutorialが良いです。

さらに新しいOffice Open XML形式を使用することもできます。これにより、ファイルが.xlsx形式で作成されます。ただし、Open XML SDKを使用する必要があります。 Office Open XML SDKの使用についてはgood tutorialです。

+0

私の現在のコードで解決策を得る可能性はありませんか?私はそれがこのような方法で働かないと信じていない –

+0

あなたは私に解決策を与えることができますか? –

0

現在使用しているコードは使用できません。それは、MSがオフィス製品でhtmlを受け入れるので、Excelがファイルを開くことができるhtmlをファイルに書き込むことのちょっとしたハックです。

上記のように、XML形式、またはEPPlusのようなサードパーティのプラグインを使用します。

+0

私の問題の解決策をハックする可能性はありませんか? –

+0

私に解決策を教えてもらえますか? –

+0

自分のコードを共有できません。しかし、私はEPPlusを使ってワークブックに複数のシートを作成できるように、古いコード例を紹介しています(http://jpeshanumardotnet.blogspot.co.uk/2011/06)。 /creating-reports-in-excel-2007-using.html – Glix

関連する問題