C# 通过Visual Studio桌面应用程序按钮创建Excel工作簿单击并填充sql数据
Visual Studio 2012 Windows桌面版 Microsoft SQL Server 2008 Excel 2007 我创建了一个桌面应用程序,用于使用数据绑定将数据输入SQL数据库。我现在需要创建一个报告,以excel工作簿的形式从应用程序客户端的SQL数据库中提取这些信息 我的问题是:如何从桌面应用程序将SQL视图中的所有列导出到excel工作簿中 我有下面的基础工作,但不确定如何将视图数据放入工作表中C# 通过Visual Studio桌面应用程序按钮创建Excel工作簿单击并填充sql数据,c#,sql-server,excel,visual-studio-2012,C#,Sql Server,Excel,Visual Studio 2012,Visual Studio 2012 Windows桌面版 Microsoft SQL Server 2008 Excel 2007 我创建了一个桌面应用程序,用于使用数据绑定将数据输入SQL数据库。我现在需要创建一个报告,以excel工作簿的形式从应用程序客户端的SQL数据库中提取这些信息 我的问题是:如何从桌面应用程序将SQL视图中的所有列导出到excel工作簿中 我有下面的基础工作,但不确定如何将视图数据放入工作表中 private void button_Click(object sen
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");
}
}
解决方案由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");
}
}
我已经编辑了你的标题。请看,如果一致意见是否定的,他们就不应该这样做。你的基本知识是正确的,我建议你获取查询数据并在工作簿中逐个单元格地输入,你也可能希望禁用Excel中的屏幕更新。谢谢@Rafael!成功了@如果发生这种情况,请将您的更新代码作为您自己问题的答案,以便将来的访问者很容易找到它。@Rafael it表示,我在提问后的两个小时内无法找到它,因为我在这个论坛上没有足够的影响力