有没有快速的方法使用C#将数组导出到Excel文件?

6
我有一组包含系列数据(x和y)的点数组。是否有快速的方法将这些数组输出到Excel文件中?
谢谢。
5个回答

9
将数据输出到一个文件中,用逗号分隔数组元素。然后将文件保存为name.csv。
使用FileWriter来输出文件。

8

Range对象的一个好处是可以将二维数组直接分配给value属性。重要的是,范围与数组元素的单元格数相同。

        //using Excel = Microsoft.Office.Interop.Excel;
        String[,] myArr = new string[10, 10];
        for (int x = 0; x < 10; x++)
        {
            for (int y = 0; y < 10; y++)
            {
                myArr[x, y] = "Test " + y.ToString() + x.ToString();
            }
        }
        Excel.Application xlApp = new Excel.Application();
        xlApp.Visible = true;
        Excel.Workbook wb = xlApp.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);
        Excel.Worksheet ws = (Excel.Worksheet)wb.Worksheets.get_Item(1);
        Excel.Range rng = ws.Cells.get_Resize(myArr.GetLength(0), myArr.GetLength(1));
        rng.Value2 = myArr;

1
+1. 这是我会选择的方法。但我会使用Range.get_Resize()方法来调整您的范围到正确的尺寸,而不是用字符串硬编码。但你得到了我的支持。 :-) - Mike Rosenblum
在Excel 2016中,必须使用Excel.Range rng = ws.Cells.Resize(myArr.GetLength(0), myArr.GetLength(1));。 - user8128167

4

2
您可以使用Ado.net来完成。我下面的代码假设在C:\Stuff\文件夹中有一个名为Book1.xls的Excel电子表格,并且该电子表格的Sheet1工作表中已经存在ID、Name和Site标题。
private void button1_Click(object sender, EventArgs e)
    {
        string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;
                    Data Source=C:\Stuff\Book1.xls;Extended Properties=
                    ""Excel 8.0;HDR=YES;""";

        using (OleDbConnection conn = new OleDbConnection(connectionString))
        {

            using (OleDbCommand command = conn.CreateCommand())
            {
                command.CommandText = @"INSERT INTO [Sheet1$] (ID, Name, Site) VALUES(1, ""Phil"", ""StackOverflow.com"")";
                conn.Open();
                command.ExecuteNonQuery();
            }
        }

    }

2
我建议您使用第三方的XSL导出组件。这样可以避免使用Excel自动化带来的麻烦,也无需在应用程序中打包Excel互操作程序集。 MyXls是一个简单的开源组件,可以进行Excel导出。它应该完全符合您的需要。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接