Asp.Net Core 导入Excel数据到Sqlite数据库并重新导出到Excel


在博文“在Asp.Net Core 使用 Sqlite 数据库”中创建了ASP.NET Core Web 应用程序,并讲解如何配置并使用Sqlite 数据库。

博文“ASP.NET Core导入导出Excel文件”中讲解了如何导入及导出Excel数据文件,实现Excel文件的导入导出功能,但导入后仅把数据呈现在页面上,并未保存至数据库。本文讲述如何将Excel文件写入Sqlite数据库。

修改OnPostImport方法为如下内容:

        private Prize prize ;

        public async Task<IActionResult> OnPostImportAsync(IFormFile excelFile)
{
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
string sWebRootFolder = _webHostEnvironment.WebRootPath;
string sFileName = $"{Guid.NewGuid()}.xlsx";
FileInfo file = new FileInfo(Path.Combine(sWebRootFolder, sFileName));
try
{
using (FileStream fs = new FileStream(file.ToString(), FileMode.Create))
{
excelFile.CopyTo(fs);
fs.Flush();
}
using(ExcelPackage package = new ExcelPackage(file))
{
StringBuilder sb = new StringBuilder();
ExcelWorksheet worksheet = package.Workbook.Worksheets[0];
int rowCount = worksheet.Dimension.Rows;
int colCount = worksheet.Dimension.Columns;
//bool bheaderRow = true;
for(int row = 2; row <= rowCount; row++)
{
prize = new Prize
{
prizeid = worksheet.Cells[row, 1].Value.ToString(),
prizename = worksheet.Cells[row, 2].Value.ToString(),
point = Convert.ToInt32(worksheet.Cells[row, 3].Value),
number = Convert.ToInt32(worksheet.Cells[row, 4].Value),
totalpoint = Convert.ToInt64(worksheet.Cells[row, 5].Value)
};
_context.Prizes.Add(prize);
}
await _context.SaveChangesAsync();
return Page();
}
}
catch(Exception ex)
{
return Content(ex.Message);
}
}

导入方法为异步方法,获取Excel文件数据后,遍历每一行,把Excel表格数据与Prize模型数据一一对应,并添加到数据上下文。

下图为Excel数据表格:

运行程序,选择excel文件后,点击 导入按钮。

导入后,数据库中出现数据,如下图:


将Sqlite数据库中的数据导出Excel

修改OnPostExport方法,如下:

   public IActionResult OnPostExport()
{
string sWebRootFolder = _webHostEnvironment.WebRootPath;
string sFileName = $"{Guid.NewGuid()}.xlsx";
FileInfo file = new FileInfo(Path.Combine(sWebRootFolder, sFileName));
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
using (ExcelPackage package=new ExcelPackage(file))
{
//add worksheet
ExcelWorksheet workSheet = package.Workbook.Worksheets.Add("AspNetCore"); workSheet.Cells.LoadFromCollection(_context.Prizes, true); package.Save();
} return File(sFileName, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
}

运行程序,点击导出按钮,即可将数据全部导出到Excel。


 只导出Totalpoint最大的5条记录


修改OnPostExport方法,实现只导出totalpoint最大的5条记录:

 public IActionResult OnPostExport()
{
var query = from m in _context.Prizes
orderby m.totalpoint descending
select m; string sWebRootFolder = _webHostEnvironment.WebRootPath;
string sFileName = $"{Guid.NewGuid()}.xlsx";
FileInfo file = new FileInfo(Path.Combine(sWebRootFolder, sFileName));
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
using (ExcelPackage package=new ExcelPackage(file))
{
//add worksheet
ExcelWorksheet workSheet = package.Workbook.Worksheets.Add("AspNetCore"); workSheet.Cells.LoadFromCollection(query.Take(5), true); package.Save();
} return File(sFileName, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
}

首先要对数据库查询记录进行排序;

var query = from m in _context.Prizes
orderby m.totalpoint descending
select m;

然后只取5条记录:

workSheet.Cells.LoadFromCollection(query.Take(5), true);

完成后导出的数据如下:


---本文结束----

Asp.Net Core 导入Excel数据到Sqlite数据库并重新导出到Excel的更多相关文章

  1. JavaScript日历控件开发 C# 读取 appconfig文件配置数据库连接字符串,和配置文件 List<T>.ForEach 调用异步方法的意外 ef 增加或者更新的习惯思维 asp.net core导入excel 一个二级联动

    JavaScript日历控件开发   概述 在开篇之前,先附上日历的代码地址和演示地址,代码是本文要分析的代码,演示效果是本文要实现的效果代码地址:https://github.com/aspwebc ...

  2. ASP.NET Core 导入导出Excel xlsx 文件

    ASP.NET Core 使用EPPlus.Core导入导出Excel xlsx 文件,EPPlus.Core支持Excel 2007/2010 xlsx文件导入导出,可以运行在Windows, Li ...

  3. ASP.NET Core导入导出Excel文件

    ASP.NET Core导入导出Excel文件 希望在ASP.NET Core中导入导出Excel文件,在网上搜了一遍,基本都是使用EPPlus插件,EPPlus挺好用,但商用需要授权,各位码友若有好 ...

  4. ASP.NET Core Identity 迁移数据 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core Identity 迁移数据 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Identity 迁移数据 上一章节中我们配置了 ...

  5. 将Excel数据表到数据库表

    假设你有大量的数据要导入到数据库表,恐怕是没有效率的写程序,作为用于数据操纵,Excel在这方面有优势,但是,如何将其结合起来?将Excel数据表到数据库表,就是本篇博客的目的. 首先去下载MySQL ...

  6. C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志

    C#实现多级子目录Zip压缩解压实例 参考 https://blog.csdn.net/lki_suidongdong/article/details/20942977 重点: 实现多级子目录的压缩, ...

  7. asp.net core 将配置文件配置迁移到数据库(一)

    asp.net core 将配置文件配置迁移到数据库(一) Intro asp.net core 配置默认是项目根目录下的 appsettings.json 文件,还有环境变量以及 command l ...

  8. POI读取Excel数据保存到数据库,并反馈给用户处理信息(导入带模板的数据)

    今天遇到这么一个需求,将课程信息以Excel的形式导入数据库,并且课程编号再数据库中不能重复,也就是我们需要先读取Excel提取信息之后保存到数据库,并将处理的信息反馈给用户.于是想到了POI读取文件 ...

  9. 导入Excel数据到Oracle数据库的脚本

    在cmd运行窗口中输入:sqlldr customermanager/123@orcl control="E:\CustomerData\excelInputOracle\insert.ct ...

随机推荐

  1. Linux:CentOS-7配置VMware-15.5与本机IP同网段

    确认本机IP ctrl+R:输入cmd 回车 输入命令:ipconfig  可以看出一下信息:本机ip: 192.168.1.162网关:192.168.1.1DNS服务器:192.168.1.1 设 ...

  2. Hystrix 使用说明

    1.什么情况下会触发 fallback 方法 名字 描述 触发fallback EMIT 值传递 NO SUCCESS 执行完成,没有错误 NO FAILURE 执行抛出异常 YES TIMEOUT ...

  3. linux学习之路第三天

    开机,重启和用户登陆注销 关机&重启命令 shutdown shutdown -h now :表示立即关机 shutdown -h 1 :表示一分钟后关机 shutdown -r now :表 ...

  4. python3.7验证码识别MuggleOCR,为什么总是报错

    先来看看MuggleOCR简介(白嫖)这是一个为麻瓜设计的本地OCR模块只需要简单几步操作即可拥有两大通用识别模块,让你在工作中畅通无阻. 这套模型是基于 https://github.com/ker ...

  5. cke编辑器插入&ZeroWidthSpace占位字符的问题记录

    背景 本博文主要记录在使用cke编辑器时,遇到的一系列的问题 问题1:在执行某些业务操作后,编辑器会偶现在页面头部或者尾部插入&ZeroWidthSpace占位符(编辑器好像就爱干这事~) 解 ...

  6. Python 操作 MySQL 的5种方式

    不管你是做数据分析,还是网络爬虫,Web 开发.亦或是机器学习,你都离不开要和数据库打交道,而 MySQL 又是最流行的一种数据库,这篇文章介绍 Python 操作 MySQL 的5种方式,你可以在实 ...

  7. UFT对于PDF 文档的操作方法 VBS代码

    1.首先需要安装Adobe Acrobat,而不是Adobe Reader 2.理解AcroExch.App .AcroExch.AVDoc.AcroExch.PODoc App 主要管理应用级别的对 ...

  8. Tbase读写分离与分库分表

    一.读写分离 1.1 what 读写分离 读写分离,基本的原理是让主数据库处理事务性增.改.删操作(INSERT.UPDATE.DELETE),而从数据库处理SELECT查询操作.数据库复制被用来把事 ...

  9. C语言学习(三)

    一.数组.循环.判断条件   #include<stdio.h> int main(){ int a =100; int b =200; int i; int arr [5]; if (a ...

  10. 福昕foxit phantom pdf高级编辑器企业版10.1 pro安装破解教程

    本文提供福昕foxit phantom pdf高级编辑器企业版10.1的安装教程.pj教程,可以使用全部功能,注意的是此方法对个人版无效. 没有必要再尝试别的文章,仅看这一篇即可!别的文章亲测是通过修 ...