1

适用于 Windows 桌面的 Visual Studio 2012 Microsoft SQL Server 2008 Excel 2007

我创建了一个桌面应用程序,用于使用数据绑定将数据输入 SQL 数据库。我现在需要创建一个报告,以 Excel 工作簿的形式从应用程序客户端的 SQL 数据库中提取此信息。

我的问题是:如何从我的桌面应用程序将 SQL 视图中的所有列导出到 excel 工作簿中?

我有下面的基础工作,但不确定如何将视图数据放入工作表中。

private void button_Click(object sender, EventArgs e)
{
    try
    {
        Excel.Application oXL = new Excel.Application();
        oXL.Visible = true;

        Excel.Workbook oWB = oXL.Workbooks.Add();
        Excel.Worksheet oSheet = oWB.ActiveSheet;
        oSheet.Cells[1, 1] = "Hello World!";

    }
    catch (Exception ex)
    {
    MessageBox.Show("Error");
    }
}
4

1 回答 1

0

OP的解决方案。

使用以下代码解决了问题。可能不是最漂亮的,但它让我度过了一天。

using Excel = Microsoft.Office.Interop.Excel;
using Microsoft.SqlServer.Server;

private void button_Click(object sender, EventArgs e)
{
    try
    {
        SqlConnection conn = new SqlConnection();
        conn.ConnectionString = dataSet1.Properties.Settings.Default.ConnectionString.ToString();
        SqlCommand cmd = new SqlCommand();
        cmd.CommandText = "SELECT * FROM dbo.Table";

        SqlDataAdapter da = new SqlDataAdapter(cmd.CommandText, conn);
        DataSet ds = new DataSet();
        da.Fill(ds, "dbo.Table");
        DataTable dt = ds.Tables["dbo.Table"];

        Excel.Application oXL = new Excel.Application();
        Excel.Workbook oWB = oXL.Workbooks.Add();
        Excel.Worksheet oSheet = oWB.ActiveSheet;

        //Puts column headers starting in Row 5
        int col = 0, row = 5;
        foreach (DataColumn dc in dt.Columns)
        {
            oXL.Cells[row, ++col] = dc.ColumnName.ToString();
        }

        //Fills data starting in row 6
        foreach (DataRow dr in dt.Rows)
        {
            row++;
            col = 0;
            foreach (DataColumn dc in dt.Columns)
            {
                oXL.Cells[row, ++col] = dr[dc.ColumnName];
            }
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show("Error");
    }
}
于 2018-05-14T16:13:49.280 回答