首页 > 解决方案 > 使用 c# 将 Postgres DB 导出到 excel

问题描述

我需要使用 C# 将 Postgres DB(大约有 20 个表)导出到 excel 中。我需要对数据库中的数据实现一些逻辑,然后需要将其导出。知道如何使用 c# 导出所有数据吗?

标签: c#excelpostgresql

解决方案


using Npgsql;
using OfficeOpenXml;  // Nuget EPPlus
using System.IO;

EPPlus 有一种将数据表导出到电子表格的一步法,因此如果您利用此方法,您应该能够遍历查询并将每个查询导出到唯一的工作表。

像这样的东西(未经测试,但应该是 99%)应该可以解决问题:

FileInfo fi = new FileInfo("foo.xlsx");
ExcelPackage excel = new ExcelPackage(fi);

int sheet = 1;

foreach (string sql in sqlQueries)
{
    DataTable dt = new DataTable();
    NpgsqlCommand cmd = new NpgsqlCommand(sql, conn);
    NpgsqlDataAdapter da = new NpgsqlDataAdapter(cmd);
    da.Fill(dt);

    ExcelWorksheet ws = excel.Workbook.Worksheets.Add(string.Format("Sheet{0}", sheet++));
    ws.Cells["A1"].LoadFromDataTable(dt, true);
}

excel.Save();

当然,我建议对数据类型、格式等进行一些改进,但这是基本结构。

当然,也可以using自由地使用 IDisposable。


推荐阅读