利用c# npoi 查询数据库并将其写入excel中,要求要有表名
时间: 2024-01-28 17:04:45 浏览: 31
好的,下面是一个简单的示例,演示如何使用 C# 和 NPOI 库查询数据库并将其写入 Excel 中。
首先,你需要使用 ADO.NET 来连接数据库并查询数据。以下是一个简单的查询代码示例:
```csharp
using System.Data;
using System.Data.SqlClient;
public class DbHelper
{
public DataTable Query(string sql)
{
using (SqlConnection conn = new SqlConnection("your connection string here"))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
{
DataTable dt = new DataTable();
adapter.Fill(dt);
return dt;
}
}
}
}
}
```
上面的代码中,`Query` 方法接收一个 SQL 查询语句,并返回一个 `DataTable` 对象,包含了查询结果。
接下来,你可以使用 NPOI 库将查询结果写入 Excel 文件中。以下是一个简单的示例:
```csharp
using System.IO;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
public class ExcelWriter
{
public void WriteToExcel(DataTable dt, string tableName, string filePath)
{
IWorkbook workbook = null;
ISheet sheet = null;
// 判断文件类型
if (Path.GetExtension(filePath) == ".xls")
{
workbook = new HSSFWorkbook();
}
else if (Path.GetExtension(filePath) == ".xlsx")
{
workbook = new XSSFWorkbook();
}
else
{
throw new Exception("不支持的文件类型");
}
// 创建表格
sheet = workbook.CreateSheet(tableName);
// 写入表头
IRow headerRow = sheet.CreateRow(0);
foreach (DataColumn column in dt.Columns)
{
headerRow.CreateCell(column.Ordinal).SetCellValue(column.Caption);
}
// 写入内容
for (int i = 0; i < dt.Rows.Count; i++)
{
IRow row = sheet.CreateRow(i + 1);
for (int j = 0; j < dt.Columns.Count; j++)
{
row.CreateCell(j).SetCellValue(dt.Rows[i][j].ToString());
}
}
// 保存文件
using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))
{
workbook.Write(fs);
}
}
}
```
上面的代码中,`WriteToExcel` 方法接收一个 `DataTable` 对象、一个表名和一个文件路径参数,并将 `DataTable` 对象中的数据写入 Excel 文件中。
综上所述,你可以将上面两段代码结合起来,先使用 `DbHelper` 类从数据库中查询数据,然后将查询结果传递给 `ExcelWriter` 类,将其写入 Excel 文件中。例如:
```csharp
DbHelper dbHelper = new DbHelper();
DataTable dt = dbHelper.Query("SELECT * FROM YourTable");
ExcelWriter excelWriter = new ExcelWriter();
excelWriter.WriteToExcel(dt, "YourTable", "C:\\YourFile.xlsx");
```
这样,你就可以将数据库中的数据查询并写入 Excel 文件中了。