我有一个数组List<float[]>
的列表,我想创建excel文件,以便我可以通过电子邮件发送数组进行测试。我需要excel而不是XML - 序列化不会在这里做。
我希望每个数组都在自己的工作表(选项卡)中 - 这里的CSV不在窗口中:(
有人可以指导我实现它的最佳方法是什么?使用Microsoft.Office.Interop.Excel
似乎对我的需求有点过分,但如果这是最好的方式,我会很感激如何做一个样本。
感谢。
答案 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数据源生成表格报告