すべてのfloat値を含むリストがあります(たとえば、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で開いて、生活を続けます
私が見ているように、2つのオプションがあります。
Excel相互運用機能を使用します。
これにより、値を出力する場所と方法を正確に制御できますが、コードを実行するシステムにExcelをインストールし、コーディングのスキルを高める必要があります。
値をCSVファイルに書き込みます。
ExcelはデフォルトでCSVファイルを読み取ることができます。この方法では、テキストファイルを作成するよりも複雑なことは必要なく、生成システムに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);
}
}
[...]
}