将数组写入excel文件

我有一个数组List<float[]> ,我想创buildExcel文件,所以我可以通过电子邮件数组进行testing。 我需要它在Excel中,而不是XML – 序列化不会在这里做。 我想每个数组在其自己的工作表(选项卡) – 在这里CSV离开窗口:(

有人能指导我实现它的最好方法是什么? 使用Microsoft.Office.Interop.Excel似乎是为了我的需要矫枉过正,但如果这是最好的方式,我将不胜感激示范如何做到这一点。

谢谢。

使用Interop可能是最简单的事情。

如果我是你的名单:

  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; } 

你好,你可以按照这些步骤

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 

我发现ClosedXML api相当容易使用和更快的方式,因为它生成Excel XML。

以下是如何在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"); 

你可以看看马丁·希丁格的开源项目 – DoddleReport – “当然,它可以把报告呈现给Excel,PDF,HTML和CSV – 当然是完全可插入的”。

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