本示例介绍在WinForm应用程序中,如何实现从数据库读取数据并填充至Excel模板文件,并提供预览及保存功能的完整代码实现。
在C# WinForm应用开发中,经常需要将数据库中的数据导出到Excel文件以进行数据分析、报表制作或数据共享。本例程提供了一种方法,允许用户将数据表的数据导出至预先设计好的Excel模板,并具备预览及保存功能。下面详细介绍实现该过程的关键知识点。
1. **数据连接与查询**:
使用ADO.NET(如SqlConnection)建立数据库连接并执行SQL语句获取所需数据。
```csharp
string connectionString = your_connection_string;
string query = SELECT * FROM TableName;
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand(query, connection);
}
```
2. **填充DataTable**:
使用`SqlCommand`的`ExecuteReader`方法读取数据库中的数据,并将其填充到`DataTable`对象中,方便后续处理。
```csharp
SqlDataAdapter adapter = new SqlDataAdapter(command);
DataTable dataTable = new DataTable();
adapter.Fill(dataTable);
```
3. **创建Excel工作簿**:
利用Microsoft.Office.Interop.Excel库(需安装Office组件)创建新的Excel应用程序实例和工作簿。
```csharp
Excel.Application excelApp = new Excel.Application();
Excel.Workbook workbook = excelApp.Workbooks.Add();
Excel.Worksheet worksheet = workbook.ActiveSheet;
```
4. **设置模板与填充数据**:
如果有预先设计好的Excel模板,可以通过`workbook.Open`方法打开。之后使用循环将DataTable中的内容写入到工作表的单元格中。
```csharp
for (int i = 0; i < dataTable.Rows.Count; i++)
{
for (int j = 0; j < dataTable.Columns.Count; j++)
{
worksheet.Cells[i + 1, j + 1] = dataTable.Rows[i][j].ToString();
}
}
```
5. **预览Excel**:
在WinForm中展示Excel文件,可以先将工作簿保存为HTML格式然后通过WebBrowser控件加载。
```csharp
workbook.SaveAs(temp.html);
webBrowser1.Navigate(temp.html);
```
6. **保存Excel**:
用户确认后,可将当前的工作簿另存为标准的Excel(xlsx)文件。
```csharp
string savePath = output.xlsx;
workbook.SaveAs(savePath);
```
7. **释放资源与异常处理**:
完成操作之后应当关闭和清理所有打开的对象以避免内存泄漏,并且添加适当的错误捕捉机制保证程序稳定运行。
8. **界面交互设计**:
在WinForm中加入必要的按钮或菜单项,绑定相应的事件处理器来执行数据导出、预览及保存功能的调用。
9. **文件IO操作管理**:
确保所有涉及文件读写的操作都正确处理路径和权限问题,保证程序的安全性和可靠性。