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

时间:2009-06-22 07:58:44

标签: c# excel

我有包含系列数据(x& y)的点数组。有没有快速的方法将这些数组输出到excel文件?

由于

5 个答案:

答案 0 :(得分:9)

将数据输出到文件,用逗号分隔数组元素。然后将文件另存为name.csv

使用FileWriter输出文件。

答案 1 :(得分:8)

关于范围对象的一个​​好处是你可以直接将一个二维数组分配给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;

答案 2 :(得分:4)

如果CSV不满意,您可以使用Microsoft.Office.Interop.Excel。一个例子是How to: Use COM Interop to Create an Excel Spreadsheet (C# Programming Guide)

答案 3 :(得分:2)

我会使用第三方xsl导出组件。这样可以省去excel自动化的麻烦,而且您不必将excel互操作程序集与应用程序捆绑在一起。

MyXls是一个简单的开源组件,可以实现出口优势。它应该可以满足你的需求。

答案 4 :(得分:2)

你可以使用Ado.net来做。我的代码假设在文件夹C:\ Stuff \中有一个名为Book1.xls的Excel电子表格,并且电子表格中有标题ID,名称,网站已存在于名为Sheet1的工作表中。

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

    }