【发布时间】:2015-03-25 20:35:43
【问题描述】:
我想在我的程序中包含一个选项,以将一些数据从数据库导出到 Excel 文件。我的数据库表中有多个列,但只会导出两列(项目和数量)。 “类别”表示数据属于哪个 dgv。 但无论如何,回到问题...我如何读取数据库中的数据到新的 excel 文件?
到目前为止,这是我的代码:
private void excelToolStripMenuItem_Click(object sender, EventArgs e)
{
//EXPORT TO EXCEL
string fname = "Inventory Report.xls";
Workbook wb = new Workbook();
Worksheet ws1 = new Worksheet("Electrical");
Connection();
sqlconnection.Open();
//string dbQuery = "SELECT * FROM inventory_table WHERE category= 0";
sqlcmd = new SqlCommand("SELECT * FROM inventory_table WHERE category= 0", sqlconnection);
using (SqlDataReader sqldr = sqlcmd.ExecuteReader())
{
if (sqldr.HasRows)
{
while (sqldr.Read())
{
//HOW DO I READ TO EXCEL???
}
sqldr.Close();
wb.Worksheets.Add(ws1);
wb.Save(fname);
}
}
}
更新:
private void excelToolStripMenuItem_Click(object sender, EventArgs e)
{
Connection();
sqlconnection.Open();
using (sqlcmd = new SqlCommand("SELECT * FROM inventory_table WHERE category= 0"))
{
using (SqlDataAdapter sqlda = new SqlDataAdapter())
{
sqlcmd.Connection = sqlconnection;
sqlda.SelectCommand = sqlcmd;
using (DataTable dt = new DataTable())
{
sqlda.Fill(dt);
using (XLWorkbook wb = new XLWorkbook())
{
string fname = "Inventory Report.xlsx";
wb.Worksheets.Add(dt, "inventory_table");
wb.SaveAs(fname);
}
}
}
}
}
【问题讨论】:
-
@scurrie 我已经研究过这个选项,但这对我来说不是一个合理的解决方案。
-
澄清一下,问题是从数据库中获取数据还是将数据写入 excel 文件?还是两者兼而有之?
-
@scurrie 我从数据库中获取数据没有问题。我已经能够从数据库中获取数据并将其显示到 dgv 上而没有问题。但是,我不明白的是如何将数据“传输”(也称为读取)到 excel 文件。
-
我发现这样的任务在 Excel VBA 中更容易完成。您必须恢复到 ADO(或 DAO)才能获得记录集,但是一旦拥有它,您就可以更好地控制该过程。我开发了一个简单的记录集到工作表代码集,只修改 SQL。
标签: c# database winforms export-to-excel