导出列表<float>到excel文件

我有一个列表包含所有浮点值(让我们说List < float > avgDifClosedLoop;)

现在要做更多的过程,我想在Excel中导出它们。 我怎么能通过C#做到这一点?

是的,但是您需要一个外部库来完成此操作(或者需要安装Office的互操作类)。 但是你可以使用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); } } [...] } 

您可以使用COM Interop服务以非常复杂的方式执行此操作,并直接写入Excel实例。 使用这种方法,您可以调用工作表函数,就好像您在Excel本身并在VBA中进行编码(但更好)。

快速简便的方法是根据你需要做什么以及需要做多less次来做到这一点,就是把你的列表写成一个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中打开它,继续你的生活

正如我所看到的,你有两个select:

  1. 使用Excel Interop 。

    这使您可以精确地控制值的输出位置和方式,但是需要在执行代码的系统上安装Excel,并且需要更多的编码技巧。

  2. 将值写入CSV文件。

    Excel可以默认读取CSV文件。 此方法不需要任何比编写文本文件更复杂的工作, 也不需要在生成系统上安装Excel。 然而,你松散的文件输出到工作表中的方式的一些控制。

把某些东西变成excel最快捷,最简单的方法就是把它写成一个CSV文件。

如果你需要的不仅仅是原始数据(比如你想格式化),那么直接使用interop或者system.io.packaging写xls或者xlsx文件是可能的。