我有一个包含所有浮点值的列表(可以说 List< float > avgDifClosedLoop; )
现在要做更多的过程,我想将它们导出到 excel 中。我怎样才能通过 c# 做到这一点?
您可以使用 COM 互操作服务以非常复杂的方式执行此操作,并直接写入 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 中打开它,继续你的生活
将某些内容写入 excel 的最快、最简单的方法是将其写为 CSV 文件。
如果您需要的不仅仅是原始数字(例如,您还想格式化它们),那么当然可以使用 interop 或 system.io.packaging 直接编写 xls 或 xlsx 文件。
是的,但您需要一个外部库来执行此操作(或需要安装 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);
}
}
[...]
}