[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

【超过500家企业部署】AWS搭建、运维、监控服务

【超过500家企业部署】AWS搭建、运维、监控服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

[仅适用于 WordPress] 云服务器“Web Speed”

[仅适用于 WordPress] 云服务器“Web Speed”

[便宜]网站安全自动诊断“快速扫描仪”

[便宜]网站安全自动诊断“快速扫描仪”

[预约系统开发] EDISONE定制开发服务

[预约系统开发] EDISONE定制开发服务

[注册100个URL 0日元] 网站监控服务“Appmill”

[注册100个URL 0日元] 网站监控服务“Appmill”

【兼容200多个国家】全球eSIM“超越SIM”

【兼容200多个国家】全球eSIM“超越SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

【全球专属服务】Beyond北美及中国MSP

【全球专属服务】Beyond北美及中国MSP

[YouTube]超越官方频道“美由丸频道”

[YouTube]超越官方频道“美由丸频道”

[ASP.NET core 3] 我尝试使用 Entity Framework Core 下载 CSV 文件

大家好,我是系统开发部的永谷。
我目前正在使用 ASP.NET core 进行开发,并且正在使用 Entity Framework Core 3。我可以通过单击 按钮来下载使用 Entity Framework Core 从数据库检索的数据作为 CSV 文件。被使用。

这次我就来介绍一下如何实现。

创建一个项目

首先,创建一个 ASP.NET Core 3 MVC 项目。

1. 打开 Visual Studio 2019
2. 选择“创建新项目”

3. 选择“ASP.NET Core Web 应用程序”

4. (可选)输入项目名称并创建它(这次是 CsvDownload)

项目现已创建。

启用 ASP.NET Core 3 以使用 Entity Framework Core 3

官方文档,因此请参考它并设置以使用 Entity Framework Core 3。
由于目的是介绍如何实现CSV文件下载,这里就省略了。

准备数据

首先,我们需要准备数据来下载 CSV 文件,因此让我们使用 Entity Framework Core 3 创建一个表并插入数据。

■ 准备表
这次,我们将准备一个Users 表。
列是
Id:主键
姓名:姓名
年龄:年龄
身高:身高
​​体重:体重

我们开始做吧。

■ 创建用户模型
接下来,要创建上表,请准备用户模型。
在Models文件夹下创建User.cs。

打开创建的 User.cs 并定义列属性,如下面的代码所示。

命名空间 CsvDownload.Models { ///<summary> /// 用户表的模型类 ///</summary> public class User { public int Id { get; } // ID 主键 Name { get; } // 年龄 public float Height { get; } // 高度 public float Weight { set; } // 重量 } }

■ 创建上下文文件
接下来,准备一个上下文文件来连接数据库和模型。
这次我在项目下创建了Context.cs。

在创建的Context.cs中编写以下代码。

使用 CsvDownload.Models; 使用 Microsoft.EntityFrameworkCore 命名空间 CsvDownload;<summary> /// 用于连接数据库的上下文类 ///</summary>公共类上下文:DbContext { 公共上下文(DbContextOptions<Context> options) : base(options) { } // 用于设置模型的公共 DbSet<User> Users { get; set; } // 属性名称成为表名称(在本例中,将创建 Users 表) } }

■ 将创建的上下文文件添加到 DI 容器中,以便可以将其用作 Entity Framework Core
接下来,将之前创建的上下文添加到 Startup.cs 的 ConfigureServices 方法中

services.AddDbContext<Context> (选项=>选项.UseSqlServer("服务器=(localdb)\\mssqllocaldb;数据库=CsvDownload;Trusted_Connection=True;MultipleActiveResultSets=true"));

*请根据需要输入数据库连接字符串(UseSqlServer部分)。如果您没有特别的偏好,上面的描述将在本地环境中创建一个CsvDownload DB。

■ 创建迁移文件
现在准备工作已完成,让我们创建一个迁移文件来创建Users 表。
只需从控制台运行命令即可轻松创建。

从工具中打开包管理器控制台

打开控制台并运行以下命令

PM> 添加-迁移 CreateTableUsers

*Add-Migration后面的名称是迁移名称。请根据需要设置。

这将创建一个 Migration 文件夹并在其中创建一个迁移文件和一个迁移快照文件。


在控制台上运行该命令,就像您在创建迁移文件
以运行迁移执行迁移的命令如下。

PM> 更新数据库

如果成功,将创建数据库并创建用户表。
*可以从[视图]⇒[SQL Server 对象资源管理器]进行检查。

■ 插入数据
现在表已创建,只需插入适当的数据即可。
* 从[SQL Server对象资源管理器]中选择一个表,然后单击[显示数据]以显示表中的数据,以便您可以直接从那里插入。


实现 CSV 下载功能

抱歉让您久等了……现在终于进入正题了。
让我们能够下载之前在 CSV 中插入的用户表数据。

■ 安装CsvHelper 软件包
首先,安装下载CSV 格式所需的名为CsvHelper 的软件包,


选择[工具] ⇒ [NuGet 软件包管理器] ⇒ [管理解决方案的NuGet 软件包],输入后会出现[CsvHelper]。

■ 安装CSV 下载按钮
这次,我们在默认主屏幕上安装一个按钮。
[查看]文件夹⇒[主页]⇒打开[index.cshtml]

使用 a 标签将 CSV 下载按钮添加到查看文件,如下所示。

@{ ViewData["标题"] = "首页" }<div class="text-center"><h1 class="display-4">欢迎</h1><p>了解如何<a href="https://docs.microsoft.com/aspnet/core">使用 ASP.NET Core 构建 Web 应用程序</a>。</p> @*添加CSV下载按钮*@<a asp-action="CsvDownload" class="btn btn-primary">用户CSV下载</a></div>

*通过在a标签中用asp-action指定Controller动作,href属性将自动补全。


我们已经安装了一个按钮
来实现CSV 下载过程由于我们上面将 Action 设置为 CsvDownload,所以让我们将 CsvDownload 操作添加到 HomeController 并在其中实现 CSV 下载过程。

打开 [Controllers] 文件夹 ⇒ [HomeController.cs]
添加 CsvDownload 操作,如下所示。

使用 System.Collections.Generic; 使用 System.Linq; 使用 Microsoft.AspNetCore.Mvc; 使用 Microsoft.Extensions.Logging;使用 System.IO;使用 CsvHelper;使用 System.Globalization 命名空间 CsvDownload.C​​ontrollers { public class HomeController : Controller { private readonly ILogger;<HomeController> _logger; 私有只读上下文 _context;<HomeController> logger, Context context) { _logger = logger; // 在构造函数中定义上下文 _context = context; } public IActionResult Index() { return View(); } public IActionResult Privacy() { return View(); Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] public IActionResult Error() { return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });<summary> /// CSV 下载 ///</summary> ///<returns> CSV 文件</returns>public FileContentResult CsvDownload() { // CSV 文件名 string csvFileName = "UserData.csv"; // 分配内存 using (var memory = new MemoryStream()) using (var writer = new StreamWriter(memory)) using ( var csv = new CsvWriter(writer, new CultureInfo(0x0411, false))) { // 使用上下文列表从 Users 表中获取数据<User>users = _context.Users.ToList(); // 记录获取的数据 csv.WriteRecords(users); writer.Flush(); // 输出为 CSV 文件 return File(memory.ToArray(), "text/ csv" , csv文件名);

■ 操作检查
现在我们已经完成了实现,让我们最后检查一下操作。
构建并打开主屏幕。
显示[用户CSV下载]按钮,单击该按钮即可下载CSV文件。

当您打开该文件时,您可以看到用户表数据已注册,如下所示。

现在您可以下载 CSV 文件。
以上是一般工艺流程。

评论

■ 您
可能不想输出某些CSV 下载不需要的列,例如ID。
对于这种情况,可以通过在Model类中不想输出的列(属性)添加[ignore]属性(需要添加using CsvHelper.Configuration.Attributes;)来处理。

使用 CsvHelper.Configuration.Attributes; 命名空间 CsvDownload.Models { ///<summary> /// 用户表的模型类 ///</summary> public class User { [Ignore] public int Id { get; } // ID 主键 public string Name { get; } // 名称 public int Age { get; ; } // 高度 public float 重量 { } // 重量 } }

现在,当您下载文件时,将不会输出 ID 列。

■ 我想更改标题名称
目前,模型属性名称按原样输出标题,但您也可以更改它。
您所要做的就是将 [Name] 属性添加到要更改的属性中。

使用 CsvHelper.Configuration.Attributes; 命名空间 CsvDownload.Models { ///<summary> /// 用户表的模型类 ///</summary> public class User { [Ignore] public int Id { get; // ID 主键 [Name("Name")] public string Name { get; } // 名称 [Name("Age")]; int Age { get; set; } // 年龄 [Name("Height")] public float Height { get; } // 身高 [Name("Weight")] public float Weight { set;重量 } }

现在,当您下载文件时,您可以看到标头已更改。

概括

你觉得怎么样?
相信在管理系统等中经常需要CSV下载功能,所以希望本文对大家有所帮助。

最后

我开设了我所属的系统开发服务网站“SEKARAKU Lab”。
Beyond是从服务器设计搭建到运营的一站式服务,所以如果您在服务器端开发方面遇到任何问题,请随时联系我们。
SEKARAKU 实验室: [https://sekarakulab.beyondjapan.com/](https://sekarakulab.beyondjapan.com/)

好吧,就是这样。
非常感谢!

如果您觉得这篇文章有帮助,请点赞!
0
加载中...
0 票,平均:0.00 / 10
5,493
X Facebook 哈特纳书签 口袋
[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[大阪/横滨] 积极招募基础设施工程师和服务器端工程师!

[大阪/横滨] 积极招募基础设施工程师和服务器端工程师!

写这篇文章的人

关于作者

长谷达也

应届毕业生加入Beyond Co., Ltd.。

我们开发网络系统(开发在浏览器上运行的服务和系统,例如网络服务、数字内容和业务管理系统)和游戏API(开发与应用程序游戏通信的程序)。

我们还为 Shopify 开发私人/自定义应用程序。

原本在大阪事务所工作,2019年调到横滨事务所。
我的爱好是棒球/卡拉OK/动漫