2011-02-18 68 views
6

我很努力地找到一個示例或代碼,以便能夠在silverlight中創建CSV或文本文件作爲可下載的鏈接。使用Silverlight 4創建CSV下載和c#

我已經在ASP.net中完成了這項工作,但無法找出使用Silverlight的方法。我正在旋轉我的輪子嗎?或者我應該創建一個ASP頁面?有沒有辦法在C#中做到這一點?

我想以正確的方式做到這一點,而不是一些黑客的工作,並會感謝任何反饋意見和建議。

在ASP我的使用:

Response.ContentType = "text/csv" 
Response.AddHeader "Content-disposition", "attachment;filename=""EPIC0B00.CSV""" 
Response.write.... 
+0

在這種情況下,我使用ashx處理程序和silverlight應用程序中的鏈接。 – vorrtex 2011-02-18 09:41:59

回答

6

我能夠如上面非常相似的代碼來解決,只包括所需的參照,所以沒有假設作出,再加上這是一個實際的工作示例。

using System; 
using System.IO; 
using System.Windows; 
using System.Windows.Controls; 
.... 

    private void btnSave_Click(object sender, RoutedEventArgs e) 
    { 
     string data = ExportData(); // This is where the data is built 
     SaveFileDialog sfd = new SaveFileDialog() 
     { 
     DefaultExt = "csv", 
     Filter = "CSV Files (*.csv)|*.csv|All files (*.*)|*.*", 
     FilterIndex = 1 
     }; 
     if (sfd.ShowDialog() == true) 
     { 
      using (Stream stream = sfd.OpenFile()) 
      { 
       using (StreamWriter writer = new StreamWriter(stream)) { 
       writer.Write(data); //Write the data :) 
       writer.Close(); 
       } 
       stream.Close(); 
      } 
     } 
    } 

    private string ExportData() 
    { 
     return "!this is the exported text"; 
    } 
+0

好點的人! +1 – 2012-07-11 16:02:43

1

Silverlight是一個客戶端技術。您無法將瀏覽器指向它,並「下載」CSV或其他任何內容。

而是使用SaveFileDialog類。下面是它的基礎上的MSDN文檔的代碼塊: -

SaveFileDialog csvDialog; 
public Page() 
{ 
    InitializeComponent(); 
    csvDialog= new SaveFileDialog(); 
    csvDialog.Filter = "CSV Files| *.csv"; 
    csvDialog.DefaultExt = "csv"; 
} 

private void button1_Click(object sender, RoutedEventArgs e) 
{ 
    bool? result = csvDialog.ShowDialog(); 
    if (result == true) 
    { 
     System.IO.Stream fileStream = csvDialog.OpenFile(); 
     System.IO.StreamWriter sw = new System.IO.StreamWriter(fileStream); 

     // Call a method to write your CSV content to the sw here 

     sw.Flush(); 
     sw.Close(); 
    } 
}