将数组写入excel文件

时间:2012-08-03 13:13:08

标签: c# excel

我有一个数组List<float[]>的列表,我想创建excel文件,以便我可以通过电子邮件发送数组进行测试。我需要excel而不是XML - 序列化不会在这里做。 我希望每个数组都在自己的工作表(选项卡)中 - 这里的CSV不在窗口中:(

有人可以指导我实现它的最佳方法是什么?使用Microsoft.Office.Interop.Excel似乎对我的需求有点过分,但如果这是最好的方式,我会很感激如何做一个样本。

感谢。

5 个答案:

答案 0 :(得分:2)

您好,您可以按照这些步骤进行操作

1添加对Microsoft.Office.Interop.Excel;

的引用

2使用您班级中的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

答案 1 :(得分: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;
    }

答案 2 :(得分:1)

我发现ClosedXML api很容易使用,速度更快,因为它会生成Excel XML。

答案 3 :(得分: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");

答案 4 :(得分:0)

你可以看看Matt Hidinger的开源项目--DoddleReport - “开箱即用它可以将报告呈现给Excel,PDF,HTML和CSV - 当然完全可插拔”。

它可以从任何IEnumerable数据源生成表格报告