EPPlus 已经支持 .net core 了

https://www.nuget.org/packages/EPPlus

https://github.com/JanKallman/EPPlus

refer: https://stackoverflow.com/questions/40209636/epplus-number-format/40214134 常用 format

note: excel datetimeoffset 不支持的

写入 excel

public async Task<IActionResult> About()
{
ViewData["Message"] = "Your application description page.";
var products = new List<Product>
{
new Product
{
name = "mk100",
date = DateTime.Now,
amount = 99.33,
published = false,
sort =
},
new Product
{
name = "mk200",
date = DateTime.Now,
amount = 99.33,
published = true,
sort =
}
}; byte[] responseBytes;
string path = Path.Combine(HostingEnvironment.WebRootPath, "excel", "abc.xlsx");
using (var package = new ExcelPackage())
{
// Add a new worksheet to the empty workbook
ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Inventory");
// 2 种方式做 select
// - 从新创建想要的对象 (比较灵活)
// - 通过 memberInfoes 选出要的
//var memberInfoes = "name,date,amount,published,sort".Split(',').Select(v => typeof(Product).GetProperty(v)).ToArray();
var datas = products.Select(p => new
{
p.name,
p.date
}); worksheet.Cells["A1"].LoadFromCollection(
datas,
true,
TableStyles.None
//BindingFlags.Public,
//memberInfoes
); // 弄 date/datetime format
using (var cellRanges = worksheet.Cells[$"B2:B{datas.Count() + 1}"])
{
cellRanges.Style.Numberformat.Format = "yyyy-mm-dd";
} //Add the headers
//worksheet.Cells[1, 1].Value = "String";
//worksheet.Cells[1, 2].Value = "Int";
//worksheet.Cells[1, 3].Value = "Double";
//worksheet.Cells[1, 4].Value = "Boolean";
//worksheet.Cells[1, 5].Value = "Date"; //worksheet.Cells[2, 1].Value = "dasd";
//worksheet.Cells[2, 2].Value = 12312;
//worksheet.Cells[2, 3].Value = 123.123123;
//worksheet.Cells[2, 4].Value = true;
//worksheet.Cells[2, 5].Value = DateTime.Now;
//worksheet.Cells[2, 5].Style.Numberformat.Format = "yyyy-mm-dd"; //worksheet.Cells["C2:C5"].Style.Numberformat.Format = "#,##0";
//worksheet.Cells["D2:E5"].Style.Numberformat.Format = "#,##0.00"; worksheet.Cells.AutoFitColumns(); //Autofit columns for all cells
System.IO.File.Delete(path); // note package.SaveAs 和 package.GetAsByteArray() 不能一起用
// 用了一个另一个就不能用了,通常我们是选其中一个用而已啦,很少 2 个都需要的
// 解决方法很简单,用 byte 然后 file stream 写 bytes 进去 responseBytes = package.GetAsByteArray();
using (var fs = System.IO.File.Create(path))
{
await fs.WriteAsync(responseBytes);
//package.SaveAs(fs);
}
} //return File(responseBytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "report.xlsx"); return File(await System.IO.File.ReadAllBytesAsync(path), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "report.xlsx");
}

读 excel

public IActionResult Contact()
{
var path = Path.Combine(HostingEnvironment.WebRootPath, "excel", "abc.xlsx");
using (var fs = System.IO.File.Open(path, FileMode.Open, FileAccess.Read))
using (var package = new ExcelPackage(fs))
{
var worksheet = package.Workbook.Worksheets["Inventory"]; var sc = worksheet.Dimension.Start.Column;
var ec = worksheet.Dimension.End.Column;
var sr = worksheet.Dimension.Start.Row;
var er = worksheet.Dimension.End.Row;
var value = worksheet.Cells[sc, sr + ].Value;
} ViewData["Message"] = "Your contact page."; return View();
}

Asp.net core 学习笔记 (Excel 读写)的更多相关文章

  1. Asp.Net Core学习笔记:入门篇

    Asp.Net Core 学习 基于.Net Core 2.2版本的学习笔记. 常识 像Django那样自动检查代码更新,自动重载服务器(太方便了) dotnet watch run 托管设置 设置项 ...

  2. ASP.NET Core 学习笔记 第一篇 ASP.NET Core初探

    前言 因为工作原因博客断断续续更新,其实在很早以前就有想法做一套关于ASP.NET CORE整体学习度路线,整体来说国内的环境的.NET生态环境还是相对比较严峻的,但是干一行爱一行,还是希望更多人加入 ...

  3. ASP.NET Core 学习笔记 第五篇 ASP.NET Core 中的选项

    前言 还记得上一篇文章中所说的配置吗?本篇文章算是上一篇的延续吧.在 .NET Core 中读取配置文件大多数会为配置选项绑定一个POCO(Plain Old CLR Object)对象,并通过依赖注 ...

  4. Asp.net Core学习笔记

    之前记在github上的,现在搬运过来 变化还是很大的,感觉和Nodejs有点类似,比如中间件的使用 ,努力学习ing... 优点 不依赖IIS 开源和跨平台 中间件支持 性能优化 无所不在的依赖注入 ...

  5. ASP.NET Core 学习笔记 第三篇 依赖注入框架的使用

    前言 首先感谢小可爱门的支持,写了这个系列的第二篇后,得到了好多人的鼓励,也更加坚定我把这个系列写完的决心,也能更好的督促自己的学习,分享自己的学习成果.还记得上篇文章中最后提及到,假如服务越来越多怎 ...

  6. ASP.NET Core 学习笔记 第四篇 ASP.NET Core 中的配置

    前言 说道配置文件,基本大多数软件为了扩展性.灵活性都会涉及到配置文件,比如之前常见的app.config和web.config.然后再说.NET Core,很多都发生了变化.总体的来说技术在进步,新 ...

  7. Asp.net core 学习笔记 ( Data protection )

    参考 : http://www.cnblogs.com/xishuai/p/aspnet-5-identity-part-one.html http://cnblogs.com/xishuai/p/a ...

  8. Asp.net core 学习笔记 SignalR

    refer : https://kimsereyblog.blogspot.com/2018/07/signalr-with-asp-net-core.html https://github.com/ ...

  9. Asp.net core (学习笔记 路由和语言 route & language)

    https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/routing?view=aspnetcore-2.1 https://doc ...

随机推荐

  1. 关于typeid和typeof

    typeid和typeof是c++/gcc编译器的两个关键字,也就是操作符,所以他们根本就不会声明在头文件中. 只不过typeid返回的是type_info,它定义在<typeinfo>头 ...

  2. NT1_keras下搭建一个3层模型并且修改。

    In [1]: import keraskeras.__version__ C:\ProgramData\Anaconda3\lib\site-packages\h5py\__init__.py:36 ...

  3. CSS层叠样式表--找到标签

    0 怎么学习CSS 1 CSS的四种引入方式 2 CSS的四种基本选择器 3 属性选择器 4 CSS伪类 5 CSS选择器优先级 6 CSS的继承性 怎么学习CSS 1.怎么找到标签(CSS选择器) ...

  4. CentOS Yum 源搭建

    创建yum源服务,主要用到了两个软件createrepo和httpd.前者是创建yum源索引的工具,后者是提供文件在线流浪的功能,当然,除了httpd之外,你也可以使用nginx替代. creater ...

  5. 论文笔记之:Heterogeneous Face Attribute Estimation: A Deep Multi-Task Learning Approach

    Heterogeneous Face Attribute Estimation: A Deep Multi-Task Learning Approach  2017.11.28 Introductio ...

  6. (转) GAN论文整理

    本文转自:http://www.jianshu.com/p/2acb804dd811 GAN论文整理 作者 FinlayLiu 已关注 2016.11.09 13:21 字数 1551 阅读 1263 ...

  7. Linux 时间矫正命令

    Linux 时间矫正 sudo ntpdate -u ntp.api.bz 第一使用可能提示ntpdate没安装,用以下命令安装即可 sudo apt install ntpdate

  8. addEventListener在一个节点上添加多个相同的事件

    <button id='btn'>attachEvent</button> window.onload=function(){ var Obtn = document.getE ...

  9. 常用for循环和for in 以及for of 的区别

    用Es6对象扩展运算符(…)与rest运算符说明 function test(first,...a){ for(let val=0; val<a.length;val++){ console.l ...

  10. 【转载】ASP.NET页面之间传值的方式之QueryString(个人整理)

    转自: https://www.cnblogs.com/kudsu/p/7694637.html QueryString Querystring也叫查询字符串,这种页面间传递数据是利用网页地址URL. ...