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

  1. public async Task<IActionResult> About()
  2. {
  3. ViewData["Message"] = "Your application description page.";
  4. var products = new List<Product>
  5. {
  6. new Product
  7. {
  8. name = "mk100",
  9. date = DateTime.Now,
  10. amount = 99.33,
  11. published = false,
  12. sort =
  13. },
  14. new Product
  15. {
  16. name = "mk200",
  17. date = DateTime.Now,
  18. amount = 99.33,
  19. published = true,
  20. sort =
  21. }
  22. };
  23.  
  24. byte[] responseBytes;
  25. string path = Path.Combine(HostingEnvironment.WebRootPath, "excel", "abc.xlsx");
  26. using (var package = new ExcelPackage())
  27. {
  28. // Add a new worksheet to the empty workbook
  29. ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Inventory");
  30. // 2 种方式做 select
  31. // - 从新创建想要的对象 (比较灵活)
  32. // - 通过 memberInfoes 选出要的
  33. //var memberInfoes = "name,date,amount,published,sort".Split(',').Select(v => typeof(Product).GetProperty(v)).ToArray();
  34. var datas = products.Select(p => new
  35. {
  36. p.name,
  37. p.date
  38. });
  39.  
  40. worksheet.Cells["A1"].LoadFromCollection(
  41. datas,
  42. true,
  43. TableStyles.None
  44. //BindingFlags.Public,
  45. //memberInfoes
  46. );
  47.  
  48. // 弄 date/datetime format
  49. using (var cellRanges = worksheet.Cells[$"B2:B{datas.Count() + 1}"])
  50. {
  51. cellRanges.Style.Numberformat.Format = "yyyy-mm-dd";
  52. }
  53.  
  54. //Add the headers
  55. //worksheet.Cells[1, 1].Value = "String";
  56. //worksheet.Cells[1, 2].Value = "Int";
  57. //worksheet.Cells[1, 3].Value = "Double";
  58. //worksheet.Cells[1, 4].Value = "Boolean";
  59. //worksheet.Cells[1, 5].Value = "Date";
  60.  
  61. //worksheet.Cells[2, 1].Value = "dasd";
  62. //worksheet.Cells[2, 2].Value = 12312;
  63. //worksheet.Cells[2, 3].Value = 123.123123;
  64. //worksheet.Cells[2, 4].Value = true;
  65. //worksheet.Cells[2, 5].Value = DateTime.Now;
  66. //worksheet.Cells[2, 5].Style.Numberformat.Format = "yyyy-mm-dd";
  67.  
  68. //worksheet.Cells["C2:C5"].Style.Numberformat.Format = "#,##0";
  69. //worksheet.Cells["D2:E5"].Style.Numberformat.Format = "#,##0.00";
  70.  
  71. worksheet.Cells.AutoFitColumns(); //Autofit columns for all cells
  72. System.IO.File.Delete(path);
  73.  
  74. // note package.SaveAs 和 package.GetAsByteArray() 不能一起用
  75. // 用了一个另一个就不能用了,通常我们是选其中一个用而已啦,很少 2 个都需要的
  76. // 解决方法很简单,用 byte 然后 file stream 写 bytes 进去
  77.  
  78. responseBytes = package.GetAsByteArray();
  79. using (var fs = System.IO.File.Create(path))
  80. {
  81. await fs.WriteAsync(responseBytes);
  82. //package.SaveAs(fs);
  83. }
  84. }
  85.  
  86. //return File(responseBytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "report.xlsx");
  87.  
  88. return File(await System.IO.File.ReadAllBytesAsync(path), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "report.xlsx");
  89. }

读 excel

  1. public IActionResult Contact()
  2. {
  3. var path = Path.Combine(HostingEnvironment.WebRootPath, "excel", "abc.xlsx");
  4. using (var fs = System.IO.File.Open(path, FileMode.Open, FileAccess.Read))
  5. using (var package = new ExcelPackage(fs))
  6. {
  7. var worksheet = package.Workbook.Worksheets["Inventory"];
  8.  
  9. var sc = worksheet.Dimension.Start.Column;
  10. var ec = worksheet.Dimension.End.Column;
  11. var sr = worksheet.Dimension.Start.Row;
  12. var er = worksheet.Dimension.End.Row;
  13. var value = worksheet.Cells[sc, sr + ].Value;
  14. }
  15.  
  16. ViewData["Message"] = "Your contact page.";
  17.  
  18. return View();
  19. }

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. 苹果笔记本充不进电怎么办_macbook充不进电解决办法

    使用苹果Macbook的用户可能会遇到这种情况,使用一段时间后自己的苹果笔记本充不进电了,虽然充电器指示灯依然亮着,但是电池电脑一直充不进去,断开充电器后就直接关机的情况.通常碰到这种情况,很多用户都 ...

  2. Java类型信息

    一.引言 最近在阅读<Java编程思想>,学习一下java类型信息,现在做一下总结.Java如何让我们在运行时识别对象和类的信息的.主要有两种方式:一种是传统的“RTTI”,它假定我们在编 ...

  3. replace 将逗号替换~

    var reg = new RegExp(",","g"); //"g"表示全局替换var aa="qq,ww";aa= ...

  4. SCOI 2018 划水记

    (此处不应有目录,省选爆零的过程得慢慢看) Day -n 一诊 说真的,在没看到“第一次诊断性考试”之前,一直以为是“一整”,真是可怕,初中教育都开始像UW中的最高祭司学习了. 感觉题目很gg.于是考 ...

  5. batchGetAnchorLevel(dubbo接口)

    一.编写脚本前的准备工作 1.安装idea,安装本地maven库,并在idea里面配置maven 2.导入git源码(目的在于下载所依赖的基础包)-->File-new-Project from ...

  6. CentOS Yum 源搭建

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

  7. Pytest 简明教程

    pytest-learn 通过文章 Python 单元测试框架之 Pytest 剖解入门(第一篇) 学习 Pytest. 有很多的第三方插件可以自定义扩展,并且支持 Allure,生成可视化的测试报告 ...

  8. Java 使用命令对堆线程分析

    一.dump基本概念 在故障定位(尤其是out of memory)和性能分析的时候,经常会用到一些文件来帮助我们排除代码问题.这些文件记录了JVM运行期间的内存占用.线程执行等情况,这就是我们常说的 ...

  9. powershell脚本的格式化

    Auto Formatting PowerShell in Visual Studio Code 1.安装visual studio code 2.安装powershell extension 3.打 ...

  10. 记录一下 ajax的基础传送

    传数据 var json = $("#form").serializeObject(); $.ajax({ url: "/getUser", type: &qu ...