2013-11-15 43 views
0

我有一個類如何創建CSV和PDF使用數組在C#中的數據源

public class Data 
    { 
     public string name{ get; set; } 
     public int age { get; set; } 
    } 

而且我有接受數據的陣列的方法,我需要生成從即將公佈的數據的CSV和PDF 。

public void ExportToCSV(Data[] data) 
    { 
     // write code to generate csv 
    } 


public void ExportToPdf(Data[] data) 
    { 
     // write code to generate pdf 
    } 

請建議。

我生成這樣的Excel,並且想知道有類似的代碼生成csv和pdf。將需要什麼變化?

public void ExportToExcel(Data[] data) 
     { 

      var grid = new GridView(); 
      grid.DataSource = data; 
      grid.DataBind(); 

      Response.ClearContent(); 

      Response.AddHeader("Content-type", "application/vnd.ms-excel"); 

      Response.AddHeader("content-disposition", "attachment;filename=export.xls"); 

      Response.ContentType = "application/excel"; 

      var swr = new StringWriter(); 

      var tw = new HtmlTextWriter(swr); 

      grid.RenderControl(tw); 

      Response.Write(swr.ToString()); 

      Response.Flush(); 

      Response.End(); 
      tw.Close(); 

      swr.Close(); 
     } 
+0

您的CSV應該是什麼樣子?你能舉一個例子嗎? –

+0

到目前爲止你的嘗試是什麼?此時你還沒有顯示任何代碼。 –

+0

屬性名稱應該在標題中,它們的值在它們的正下方像這樣http://www.trirand.net/examples/grid/exporting/csv/default.aspx – user2866746

回答

1

使用LINQ:

string csv = data.ToLidt() 
      .Select(i => string.Format("{0}, {1}", i.name, i.age.ToString()) 
      .Aggregate((a, b) => string.Format("{0}\r\n{1}")); 

更新:

那麼,在技術上,您的Excel生成的代碼也沒有創造的Excel。你只是使用GridView渲染控制類,我懷疑要創建Excel。

但創建PDF及其他文件,您的路徑是一樣的:

  1. 使用一些第三方庫
  2. 有時,文件需要被暫時保存在服務器上創建的文件,在這種情況下,你可以看看here
  3. 您應該在響應中設置正確的MIME類型,以便瀏覽器知道它與內容有什麼關係。
  4. 您應該設置Content-Disposition標題,以便瀏覽器下載文件而不是打開它。
  5. 而你最後將文件作爲二進制數組寫入響應流。
+0

我想問你同樣的問題我如何發送文件到瀏覽器下載? – user2866746

+0

然後問,我們來幫忙:) –

+0

我編輯我的帖子,請檢查 – user2866746

1

嘗試

using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Test\yourFile.csv")) 
{ 
    file.WriteLine("name,age"); 
    foreach(var item in data) 
    { 
     file.WriteLine(String.Format("{0},{1}", item.name, item.age)); 
    } 
} 
+0

這段代碼運行後,瀏覽器如何知道它需要打開這個文件? – user2866746

+0

我認爲你使CSV與JSON混淆 –

+0

不要擔心json,我會稍後將它轉換爲服務器上的數組。我需要知道如何將文件發送到瀏覽器 – user2866746

相關問題