将数据插入到SQL Server表中的Excel工作表的列中

我有一个有七列的Excel工作表,其中两列是空的。 我有SQL Server中的父表与几列和完整的数据。

如何通过从ASP.NET MVC中的SQL Server表中获取数据来填充这两个空列? 提前致谢!

你有没有看过使用C#库(如NPOI或EPPlus)来修改你的Excel工作表?

您是否熟悉Entity Framework以及如何使用NuGet将其安装到您的项目中? 你需要使用EF和LINQ来检索SQL表中的数据。 这一切都取决于你的应用程序的stream程以及你想要触发Excel工作表更新的内容,但是你可能希望在你的控制器中有一个响应用户交互的操作方法,然后访问db数据并写入表格。 或者你只是想要做一次提取和从SQL Server到Excel的数据加载? 这将是一个Web应用程序或只是一个基本的控制台应用程序?

编辑(EPPlus例子):

下面是一个简单的示例,我将它们放在一起,显示如何使用EPPlus修改Excel工作表:

var file = new FileInfo("C:\\Projects\\ConsoleApplication1\\test.xlsx"); if (file.Exists) { using (ExcelPackage ep = new ExcelPackage(file)) { var workSheet = ep.Workbook.Worksheets[1]; workSheet.Cells[2, 4].Value = "test"; ep.Save(); } } 

在本例中,我使用System.IO中的FileInfo打开Excel文件,然后假定该文件存在,创build一个新的ExcelPackage对象,并将FileInfo对象作为参数传入。 然后访问第一个工作表并访问第二行第四列中的单元格,并将值设置为“test”。 最后,我保存更改。 正如你所看到的,使用起来非常简单。 如果您需要进一步澄清或扩展示例,请告诉我。

只要记住包含System.IO和OfficeOpenXml(从NuGet安装EPPlus软件包之后):

 using OfficeOpenXml; using System.IO; 

编辑(entity framework指导):

假设你没有使用.NET Core,因为你已经有了一个现有的数据库,我推荐你在Entity Framework 6中使用简单的Database First方法来查询和检索你的SQL Server数据库。 按照此处列出的说明在您的Web应用程序中设置您的实体数据模型。 一旦你创build了EDMX文件,并且创build了你的控制器,你就可以编写一个LINQ查询来获取数据。 我不知道数据库模式的细节,或者需要多less数据来填充列,或者用户是否要提供input作为查询的一部分,所以它提供了一个特定的例如,但我可以给你一个通用的例子,然后希望可以从那里运行。 这是一个快速和肮脏的例子,结合查询数据库和写入数据到Excel工作表。 在这个例子中,我正在查询Cars表中的所有Blue车辆,然后将结果集中的每辆车的Make和Model写入Excel电子表格(从第一行开始)。 当我遍历结果集时,我增加了行数,并假设Make是在第一列,Model是在Sheet的第二列。

  var file = new FileInfo("C:\\Projects\\ConsoleApplication1\\test.xlsx"); if (file.Exists) { using (CarEntities dc = new CarEntities()) { var carList = from c in dc.Cars where c.Color == "Blue" select c; var rowCount = 1; using (ExcelPackage ep = new ExcelPackage(file)) { foreach (var car in carList) { var workSheet = ep.Workbook.Worksheets[1]; workSheet.Cells[rowCount, 1].Value = car.Make; workSheet.Cells[rowCount, 2].Value = car.Model; rowCount++; } ep.Save(); } } }