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. Spring:Spring-IOC容器、DI依赖注入简介

    Spring容器到底是什么? 从概念上讲:Spring 容器是 Spring 框架的核心,是用来管理对象的.容器将创建对象,把它们连接在一起,配置它们,并管理他们的整个生命周期从创建到销毁. 从具象化 ...

  2. 线程中的join()

    http://blog.itpub.net/31555134/viewspace-2221319/ 一直对join()方法不是很理解,在A线程中, B线程调用了join()方法,然后在内部实际是wai ...

  3. mqtt 集成

    -- 在pom.xml导入依赖 <!-- mqtt --> <dependency> <groupId>org.springframework.boot</g ...

  4. js 简单实现获取短信按钮倒计时60秒

    <!DOCTYPE html><html lang="en"><head> <meta http-equiv="Content- ...

  5. chrome 屏蔽广告的利器

    Adblock Plus https://chrome.google.com/webstore/detail/adblock-plus/cfhdojbkjhnklbpkdaibdccddilifddb ...

  6. Nginx PHP测试装

    Nginx yum -y install gcc gcc-c++ make automake autoconf pcre pcre-devel zlib zlib-devel openssl open ...

  7. python 操作word

    pip install python.docx from docx import DocumentDoc = Document() 解释:from 从 docx这个文件中,导入一个叫Document的 ...

  8. Spark RDD编程-大数据课设

    目录 一.实验目的 二.实验平台 三.实验内容.要求 1.pyspark交互式编程 2.编写独立应用程序实现数据去重 3.编写独立应用程序实现求平均值问题 四.实验过程 (一)pyspark交互式编程 ...

  9. LeetCode 780. Reaching Points

    题目链接:https://leetcode.com/problems/reaching-points/ 题意:给定操作可以使点(x,y)变为点(x+y,y)或者点(x,x+y).现已知初始点(sx,s ...

  10. React 之 组件生命周期

    React 之 组件生命周期 理解1) 组件对象从创建到死亡它会经历特定的生命周期阶段2) React组件对象包含一系列的勾子函数(生命周期回调函数), 在生命周期特定时刻回调3) 我们在定义组件时, ...