2012-05-08 32 views
2

我有一個列表包含所有浮點值(可以說列表< 浮動> avgDifClosedLoop;)導出列表<float>到Excel文件

現在做多過程中,我想將它們導出到Excel中。我怎樣才能通過C#做到這一點?

+4

是的,這是可能的。你是否想要問一些比這更有意義的事情? – Oded

+1

他問如何不可能在哪裏 –

+4

@АртёмЦарионов - 這不是我所看到的。無論如何,[Stack Overflow不是個人研究助理](http://meta.stackexchange.com/a/128553/140505) - 我們希望在我們回答之前看到提問者所做的努力和努力。 – Oded

回答

1

是的,但您需要一個外部庫來執行此操作(或需要安裝Office的interop類)。但是,您可以使用NPOI來做到這一點(無需互操作)。

例如:

using System.Collections.Generic; 
using System.IO; 
using System.Windows; 
using System.Windows.Documents; 
using NPOI.HSSF.UserModel; 

namespace listFloatToExcel 
{ 

    [...] 

     private void button1_Click(object sender, RoutedEventArgs e) 
     { 
      //list of floats 
      List<float> f = new List<float>(); 
      f.Add(4.323F); 
      f.Add(34.54F); 
      f.Add(12.4F); 
      f.Add(454F); 
      f.Add(0987.32F); 

      // Create a new workbook and a sheet named "Floats" 
      var workbook = new HSSFWorkbook(); 
      var sheet = workbook.CreateSheet("Floats"); 

      var rowIndex = 0; 
      foreach (var n in f) 
      { 
       var row = sheet.CreateRow(rowIndex); 
       row.CreateCell(0).SetCellValue(n); 
       rowIndex++; 
      } 

      using (var fileData = new FileStream(@"C:\temp\listFloatToExcel\floats.xls", FileMode.Create)) 
      { 
       workbook.Write(fileData); 
      } 

     } 

    [...] 
} 
+0

當我添加引用時,我得到了以下兩個錯誤: using System.Windows.Documents; using NPOI.HSSF.UserModel; 無法找到類型或名稱空間名稱'NPOI'(缺少使用指令或程序集引用嗎?) 命名空間名稱爲'Documents' –

+1

您是否真的在解決方案資源管理器中將這些內容添加爲參考?不僅僅是你班上的「使用」? – Brad

+0

整理好了,謝謝 –

3

當我看到它,你有兩個選擇:

  1. 使用Excel Interop

    這使您可以準確控制值的輸出位置和方式,但需要在執行代碼的系統上安裝Excel,並且編碼技巧更高。

  2. 將值寫入CSV文件。

    默認情況下,Excel可以讀取CSV文件。此方法不需要任何比編寫文本文件更復雜的方法,並且而不是要求在生成系統上安裝Excel。但是,您對文件輸出到工作表的方式有一些控制權。

+0

3.您可以使用system.io.packaging類直接編寫不帶excel的xlsx文件。但它仍然是一個痛苦(它可能更容易開始一個空白文件作爲模板並編輯它)。 –

3

將某些東西轉化爲excel最快捷,最簡單的方法是將其寫成CSV文件。

如果您需要的不僅僅是原始數據(例如,您也想格式化它們),那麼可以直接使用interop或system.io.packaging編寫xls或xlsx文件。

4

您可以使用COM Interop服務以非常複雜的方式執行此操作,並直接寫入Excel實例。使用這種方法,您可以調用工作表函數,就好像您在Excel本身並在VBA中進行編碼一樣(但更好)。

快速和簡單的方法來做到這一點,取決於你需要做的,你需要多少時間做別的什麼,就是寫你的名單作爲一個CSV文件一拉

using (StreamWriter sw = new StreamWriter(outputFile)) 
{ 
    List<float> f = new List<float>(); 
    StringBuilder sb = new StringBuilder(); 
    foreach (var item in f) 
    { 
     sb.AppendLine(item.ToString()); 
    } 
    string linetoWrite = String.Join(",", sb); 
    sw.WriteLine(linetoWrite); 
} 

然後只需在Excel中打開它並繼續使用您的生活