2011-01-11 13 views
2

リスト(データグリッドのような)をExcelにエクスポートする方法を知りたいと思います。Webリクエストの結果としてリスト<t>をExcelにエクスポートする方法

私は、私は、MicrosoftからオープンXMLに関するいくつかの例を見てきたなど、

をCSVについて話しますが、XMLと圧縮され、実際のXLSXファイルではありませんしています。

第二のものと最も重要なのは、どのようにあなたがすべてでディスク上にない優れもの救うんが、その代わりにResponse.Writeを使用して、ウェブ上で、クライアントにそれを書き込む....

ビル。

+2

いくつかの例が間違っていますか? – SLaks

+0

あなたがこれまでに持っているものを示してください。私たちはあなたのためにすべてを書くことはできません...あなたは動作していないサンプルコードがありますか? – Hogan

+0

興味深い...私があなたの質問を読んでいたので、ここを指している広告(http://www.aspose.com/categories/product-family-packs/aspose.cells-product-family/default.aspx)が現れました。私はあなたの答えがあると信じています。 – Hogan

答えて

2

私は通常、リストにバインドされたDataGridコントロールをレンダリングし、応答のcontent-typeを "application/vnd.ms-excel"に設定します。ファイルがExcelで開きます。 Excelはファイルのタイプが間違っていると警告しますが、それでもそれは開きます。

私が使用するコードはPage.Renderでこのような何か()である:

Response.ContentType = "application/vnd.ms-excel"; 
Response.AddHeader("Content-Disposition", "attachment;filename=myfilename.xls"); 

var grid = new DataGrid(); 
grid.DataSource = myList; 
grid.DataBind(); 
grid.Render(writer); 

Response.End(); 

私は、これは直接あなたの質問に答えていないことを知っているが、多分それはとにかく役立ちます。私は私の知識になり基づき

0

  1. は、Office相互運用機能を使用して、新しいXLSファイルを作成します。
  2. ファイルをディスクに書き込みます。
  3. Response.WriteFileを使用してクライアントに送信します。
  4. ディスクからファイルを削除します。

もっとスリックな方法があると確信しています。

編集:あなたは明らかにthis insteadを見てください。 :)

+1

いいえ、彼はこれがWebサーバー上にあると言います。オフィスの相互運用機能をサーバー上で使用することはできません。または、問題なく使用できます。 – Rup

1

どちらのシナリオでも、Office Open XML SDK(またはこのSDKを実装するライブラリ)を使用することをお勧めします。最初にファイル形式に精通し、Open XML Developerサイトが役立つことをお勧めします。これはしばしば重要な作業ではありませんが、データが本当に簡単な場合は、XLINQを使用して簡単に作業できます。

List<Person> people = new List<Person>(sourceData); 
XNamespace ns = @"http://schemas.openxmlformats.org/spreadsheetml/2006/main"; 

Func<Person, XElement> nameColumn = 
    (person) => new XElement(ns + "c", new XAttribute("r", "A1"), 
        new XElement(ns + "v", person.Name); 
Func<Person, XElement> ageColumn = 
    (person) => new XElement(ns + "c", new XAttribute("r", "A2"), 
        new XElement(ns + "v", person.Age.ToString()); 

var worksheet = new XDocument(
    new XElement(ns + "worksheet", 
     new XElement(ns + "sheetData", 
      people.Select((pp,rr) => 
       new XElement(ns + "row", 
          new XAttribute("r", (rr + 1).ToString()), 
          nameColumn(pp), 
          ageColumn(pp)) 
      ).ToArray() 
     ) 
    ) 
); 
関連する問題