0

配列のリストがありList<float[]>、テストのために配列を電子メールで送信できるように、Excel ファイルを作成したいと考えています。XMLではなくExcelで必要です-シリアル化はここでは行いません。各配列を独自のワークシート(タブ)に配置したい-ここでCSVはウィンドウから出ます:(

誰かがそれを達成するための最良のアプローチを教えてもらえますか? を使用するMicrosoft.Office.Interop.Excelと、私のニーズにはやり過ぎのように思えますが、これが最善の方法である場合は、その方法のサンプルをいただければ幸いです。

ありがとう。

4

5 に答える 5

2

こんにちは、これらの手順に従うことができます

1 Microsoft.Office.Interop.Excel への参照を追加します。

2 クラスに using Microsoft.Office.Interop.Excel を追加します

3 このコードを試してください

読む

            var applicationClass = new Application();
            var workbook = applicationClass.Workbooks.Open(workbookPath, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing
                                , Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
            var worksheet = workbook.GetWorksheet(sheet);
            var usedRange = worksheet.UsedRange;

            for (int i = beginIndexRow; i < usedRange.Rows.Count; i++) 
            {
                var input = (Range)usedRange.Cells[i, 1]; //I read the first column

            }
            workbook.Close(false, workbookPath, null);
            applicationClass.Quit();

            while (Marshal.ReleaseComObject(usedRange) > 0)
            { }
            while (Marshal.ReleaseComObject(worksheet) > 0)
            { }
            while (Marshal.ReleaseComObject(workbook) > 0)
            { }
            while (Marshal.ReleaseComObject(applicationClass) > 0)
            { }

書き込み

 usedRange.Cells[i, 1].Value2 = .....; //I write the first column
于 2012-08-03T13:17:49.490 に答える
1

ClosedXMLでそれを行う方法は次のとおりです。

var list = new List<float[]>() { new float[] { 1, 2 }, new float[] { 3, 4 } };

var wb = new XLWorkbook();
int i = 1;
foreach (var l in list)
    wb.AddWorksheet("Sheet" + i++).FirstCell().Value = l;

wb.SaveAs("Arrays.xlsx");
于 2012-08-04T03:20:42.563 に答える
1

ClosedXML APIは、代わりに Excel XML を生成するため、操作が非常に簡単で高速であることがわかりました。

于 2012-08-03T13:30:18.743 に答える
1

Interop の使用は、おそらく最も簡単な方法です。

l があなたのリストの場合:

    Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
    xlApp.Visible = true;
    xlApp.Workbooks.Add(misValue);
    int nWS = xlApp.ActiveWorkbook.Worksheets.Count;
    for (int i = nWS; i < l.Count; i++)
        xlApp.ActiveWorkbook.Worksheets.Add(misValue, misValue, misValue, misValue);
    int iWS = 1;
    foreach (float[] ff in l)
    {
        Microsoft.Office.Interop.Excel.Worksheet ws = (Microsoft.Office.Interop.Excel.Worksheet)xlApp.ActiveWorkbook.Worksheets[iWS++];
        int idxRow = 1;
        foreach (float aFloat in ff)
            ws.Cells[idxRow++, 1] = aFloat;
    }
于 2012-08-03T13:28:36.293 に答える
0

MattHidingerのオープンソースプロジェクトであるDoddleReportをご覧ください。「箱から出してすぐにレポートをExcel、PDF、HTML、CSVにレンダリングできます。もちろん完全にプラグイン可能です」。

IEnumerableデータソースから表形式のレポートを生成できます

于 2012-08-03T13:33:41.270 に答える