2

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

现在要做更多的过程,我想将它们导出到 excel 中。我怎样才能通过 c# 做到这一点?

4

4 回答 4

4

您可以使用 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 中打开它,继续你的生活

于 2012-05-08T19:25:38.453 回答
3

将某些内容写入 excel 的最快、最简单的方法是将其写为 CSV 文件。

如果您需要的不仅仅是原始数字(例如,您还想格式化它们),那么当然可以使用 interop 或 system.io.packaging 直接编写 xls 或 xlsx 文件。

于 2012-05-08T19:20:44.867 回答
3

在我看来,您有两种选择:

  1. 使用Excel 互操作

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

  2. 将值写入CSV文件。

    Excel 默认可以读取 CSV 文件。这种方法不需要比编写文本文件更复杂的东西,也不需要在生成系统上安装 Excel。但是,您对如何将文件输出到工作表中失去了一些控制。

于 2012-05-08T19:20:22.277 回答
2

是的,但您需要一个外部库来执行此操作(或需要安装 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);
            }

       }

    [...]
}
于 2012-05-08T19:34:38.190 回答