2

すべてのfloat値を含むリストがあります(たとえば、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

私が見ているように、2つのオプションがあります。

  1. Excel相互運用機能を使用します。

    これにより、値を出力する場所と方法を正確に制御できますが、コードを実行するシステムにExcelをインストールし、コーディングのスキルを高める必要があります。

  2. 値をCSVファイルに書き込みます。

    ExcelはデフォルトでCSVファイルを読み取ることができます。この方法では、テキストファイルを作成するよりも複雑なことは必要なく、生成システムにExcelをインストールする必要もありません。ただし、ファイルをワークシートに出力する方法をある程度制御できなくなります。

于 2012-05-08T19:20:22.277 に答える
3

何かをExcelに取り込む最も速くて簡単な方法は、CSVファイルとして書き出すことです。

生の数値以外のものが必要な場合(たとえば、それらもフォーマットしたい場合)、interopまたはsystem.io.packagingを使用してxlsまたはxlsxファイルを直接書き込むことは確かに可能です。

于 2012-05-08T19:20:44.867 に答える
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 に答える