/// <summary>
/// 导出Excel
/// </summary>
/// <param name="path">路径</param>
/// <param name="tableHeaders">表头,Dictionary<propname,name> propname属性名 ,name表头名称</param>
/// <param name="data"></param>
/// <returns></returns>
public static string Export(string path, Dictionary<string, string> tableHeaders, Object[] data)
{
string fileName = $"{Guid.NewGuid()}.xlsx";
var filePath = $"{path}\\{fileName}";
FileInfo file = new FileInfo(filePath);
try
{
using (ExcelPackage package = new ExcelPackage(file))
{ ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("exportdata");
var row = 1;
for (int i = 0; i < tableHeaders.Count; i++)
{
var headName = tableHeaders.ElementAt(i).Value;
worksheet.Cells[row, i + 1].Value = headName;
}
foreach (object item in data)
{
row++;
var propts = item.GetType().GetProperties();
for (int i = 0; i < tableHeaders.Count; i++)
{
var propName = tableHeaders.ElementAt(i).Key;
var check = propts.FirstOrDefault(o => o.Name.ToLower() == propName.ToLower());
if (check == null) worksheet.Cells[row, i + 1].Value = "";
else
{
var value = check.GetValue(item);
worksheet.Cells[row, i + 1].Value = value == null ? "" : value.ToString();
};
}
}
package.Save();
}
}
catch (Exception ex)
{
LogHelper.Singleton.Write(typeof(ExcelHelper), ex);
return null;
}
return filePath;
}
  /// <summary>
/// 导入数据
/// </summary>
/// <param name="filePath">文件</param>
/// <returns></returns>
public static List<SchoolModel> ImportSchool(string filePath)
{
FileInfo file = new FileInfo(filePath);
List<SchoolModel> result = new List<SchoolModel>();
if (file.Length == 0) return null;
using (ExcelPackage package = new ExcelPackage(file))
{
//访问Excel的第一张表
ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
//获取表格不为空的数
int rowCount = worksheet.Cells.Where(o=>o.Value!=null).Count();
//获取表格列数
int columnsCount = worksheet.Dimension.Columns;
          //跳过表头从第二行,读取数据
for (int row = 2; row <= rowCount; row++)
{
if (row < 2) return null;
if (worksheet.Cells[row, 1].Value == null
|| worksheet.Cells[row, 2].Value == null
|| worksheet.Cells[row, 3].Value == null
|| worksheet.Cells[row, 4].Value == null
|| worksheet.Cells[row, 5].Value == null
|| worksheet.Cells[row, 6].Value == null)
{
continue;
}
result.Add(new SchoolModel()
{
SchoolName = worksheet.Cells[row, 1].Value.ToString(),
SchoolCode = worksheet.Cells[row, 2].Value.ToString(),
SubjectName = worksheet.Cells[row, 3].Value.ToString(),
SubjectCode = worksheet.Cells[row, 4].Value.ToString(),
SchoolSystem = worksheet.Cells[row, 5].Value.ToString(),
TuitionStandard = decimal.Parse(worksheet.Cells[row, 6].Value.ToString()),
}); }
package.SaveAs(file);
}
return result;
}
///数据模型类
public class SchoolModel
{
public string SchoolName { get; set; }
public string SchoolCode { get; set; }
public string SubjectName { get; set; }
public string SubjectCode { get; set; }
public string SchoolSystem { get; set; }
public decimal TuitionStandard { get; set; }
}

 

.Net Core 读取,导入 excel数据 officeopenxml的更多相关文章

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

    Asp.Net Core 导入Excel数据到Sqlite数据库并重新导出到Excel 在博文"在Asp.Net Core 使用 Sqlite 数据库"中创建了ASP.NET Co ...

  2. 基于 Aspose.Cells与XML导入excel 数据----操作类封装

    前言 导入excel数据, 在每个项目中基本上都会遇到,第三方插件或者基于微软office,用的最多的就是npoi,aspose.cells和c#基于office这三种方式,其中各有各的优缺点,在这也 ...

  3. thinkphp整合系列之phpexcel导入excel数据

    一:导入phpexcel /ThinkPHP/Library/Vendor/PHPExcel 二:导入excel的函数 /** * 导入excel文件 * @param string $file ex ...

  4. springboot批量导入excel数据

    1 背景 小白今天闲着没事,在公司摸鱼,以为今天有事无聊的一天,突然上头说小子,今天实现一下批量导入Excel数据吧,当时我的内心是拒绝的,然后默默打开idea. 2 介绍 2.1 框架 java本身 ...

  5. SQL Server服务器上需要导入Excel数据的必要条件

    SQL Server服务器上需要导入Excel数据,必须安装2007 Office system 驱动程序:数据连接组件,或者Access2010的数据库引擎可再发行程序包,这样就不必在服务器上装Ex ...

  6. PLSQL Developer导入Excel数据

    LSQL Developer导入Excel数据 最近处理将Excel数据导入Oracle的工作比较多.之前都是采用Sqlldr命令行导入的方式处理.每次导入不同格式的Excel表数据,都需要先把Exc ...

  7. 导入excel数据

    前提条件:先要安装好EXCEL软件. 程序中经常要用到导入excel数据的功能.其实通过ole操作excel就简单的几行代码,但记性不好,经常要用经常要找, 还是作篇笔记吧. var ExcelApp ...

  8. (转)PLSQL Developer导入Excel数据

    场景:近来在做加班记录的统计,主要是统计Excel表格中的时间,因为我对于Excel表格的操作不是很熟悉,所以就想到把表格中的数据导入到数据库中,通过脚本语言来统计,就很方便了!但是目前来看,我还没有 ...

  9. 结合bootstrap fileinput插件和Bootstrap-table表格插件,实现文件上传、预览、提交的导入Excel数据操作流程

    1.bootstrap-fileinpu的简单介绍 在前面的随笔,我介绍了Bootstrap-table表格插件的具体项目应用过程,本篇随笔介绍另外一个Bootstrap FieInput插件的使用, ...

随机推荐

  1. web前端笔记(包含php+laravel)

    概况 熟悉HTML5.CSS3.JavaScript.ES6规范 熟悉JQuery框架 熟悉BootStrap 熟悉Less.Sass 熟悉Vue 熟悉Git postman Bootstrap 布局 ...

  2. H5选择器

    1.标签选择器 注意点:1. 标签选择器选中当前所有的标签,而不能单独选择某个标签 2.标签选择器不无多深都能被选中     3.只要是HTML中的标签就可以作为表亲啊选择器(h/a/img/ul/o ...

  3. 用于测试SqlAnalyzer1.00的十七个测试用例

    SqlAnalyzer功能:解析SQL语句,具体到字段,表和条件,并将其整理后输出格式化文本. 1. 原文=select a from b 整理后文本= select a from b 2. 原文=s ...

  4. mybatis-spring-boot-starter 1.3.0 操作实体类的SpringBoot例子

    例程下载:https://files.cnblogs.com/files/xiandedanteng/gatling20200428-02.zip 需求:使用mybatis实现对hy_emp表的CRU ...

  5. HTML-CSS-JS Prettify 代码格式化插件

    前提:已经安装 node.js.安装插件 HTML-CSS-JS Prettify,修改node路径,即可通过单击右键 HTML-CSS-JS Prettify 中的 Prettify Code 使用 ...

  6. 【盗墓笔记】图解使用fat-aar方式在AndroidStudio中打包嵌套第三方aar的aar

    将一些项目中的一些独立功能打包成aar,不仅能于项目解耦,还能够提供给其它项目使用相同的功能,可谓是为项目开发带来了很大的便利.最近第一次做sdk,碰到一些问题,花了不少时间才解决,所以这里做一下简单 ...

  7. ASP.NET解压zip文件,并将解压后的文件放到指定路径中

    本文链接:https://www.cnblogs.com/yifeixue/p/11769905.html 本人已亲测有效(*^▽^*) 废话不多说了,直接上代码: 1 /// <summary ...

  8. [程序员代码面试指南]递归和动态规划-排成一条线的纸牌博弈问题(DP)

    题目 给定一个整型数组arr,代表数值不同的纸牌排成一条线.玩家A和玩家B依次拿走每张纸牌,规定玩家A先拿,玩家B后拿,但是每个玩家每次只能拿走最左或最右的纸牌,玩家A和玩家B都绝顶聪明.请返回最后获 ...

  9. 图形渲染的大致过程和关于OpenGL渲染管线的一些零碎知识,openglpipeline,vao,vbo,ebo.

    重要!!! OpenGL新人一枚,希望可以再此和大家分享有用的知识,少走弯路 文章会定期更新,把前面几段已经整理过的知识更完后,接下来每周至少会更两次. 文章如果有不对的,理解错误的地方,也非常希望在 ...

  10. Java Comparable 和 Comparator 接口详解

    本文基于 JDK8 分析 Comparable Comparable 接口位于 java.lang 包下,Comparable 接口下有一个 compareTo 方法,称为自然比较方法.一个类只要实现 ...