使用C#将Postgres DB导出到excel

时间:2018-12-14 10:01:28

标签: c# excel postgresql

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

2 个答案:

答案 0 :(得分:1)

问题可以分为两个子问题

  1. 从postgres将数据导入c#。
  2. 将数据推送到excel。

现在一次解决问题

Here是一篇有关使用c#与postgres一起工作的好文章

一旦在c#中拥有数据,就可以使用可用于使用c#的Excel的众多库中的任何一个

其中之一是NPOI

Here是一个带有示例的例子

快乐编码。!!!

答案 1 :(得分:1)

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();

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

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