C# winform实现从数据库A表,B表,C表等具有关联的表中获取需要的数据将其内容写入到Excel中后导出
时间: 2024-10-11 17:15:49 浏览: 33
c# winform DataGridView导出数据到Excel中
4星 · 用户满意度95%
在C# WinForm中,要实现从多个数据库表(如A、B、C表)通过关联查询获取数据,并将结果写入Excel文件导出,你可以按照以下步骤操作:
1. **连接数据库**:
使用ADO.NET(Avalon Data、Entity Framework等)或第三方库(如NHibernate、MySql.Data等),连接到每个数据库,获取对应的连接对象。
```csharp
using System.Data.SqlClient;
string connectionStringA = "你的数据库A连接字符串";
SqlConnection dbA = new SqlConnection(connectionStringA);
```
2. **创建数据访问层(Data Access Layer, DAL)**:
编写存储过程或SQL查询,用于获取关联数据。如果有多对多或一对多关系,可能需要使用JOIN语句。
3. **执行查询并获取数据**:
执行查询,填充`DataSet`或`DataTable`等数据结构。
```csharp
SqlCommand commandA = new SqlCommand("SELECT * FROM A JOIN B ON A.ID = B.AID", dbA);
SqlDataAdapter adapterA = new SqlDataAdapter(commandA);
DataTable dtA = new DataTable();
adapterA.Fill(dtA);
```
4. **处理其他表B,C...的数据获取流程类似**。
5. **合并所有数据**:
将所有查询的结果集合并成一个大的`DataTable`或`DataFrame`,可以根据需求调整。
6. **将数据写入Excel**:
使用Epplus、Microsoft.Office.Interop.Excel或开源库EPPlusSharp等工具,将数据写入Excel工作簿。
```csharp
using OfficeOpenXml;
using (var excelPackage = new ExcelPackage())
{
var worksheet = excelPackage.Workbook.Worksheets.Add("Sheet1");
// 写入数据到工作表
foreach (DataRow row in dtA.Rows)
{
worksheet.Cells[1, 1].LoadFromRecord(row);
}
}
```
7. **保存并导出Excel文件**:
最后,保存并关闭Excel文件。
```csharp
excelPackage.SaveAs(new FileInfo(@"C:\ExportedData.xlsx"));
```
阅读全文