Asp.net core 学习笔记 (Excel 读写)
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 读写)的更多相关文章
- Asp.Net Core学习笔记:入门篇
Asp.Net Core 学习 基于.Net Core 2.2版本的学习笔记. 常识 像Django那样自动检查代码更新,自动重载服务器(太方便了) dotnet watch run 托管设置 设置项 ...
- ASP.NET Core 学习笔记 第一篇 ASP.NET Core初探
前言 因为工作原因博客断断续续更新,其实在很早以前就有想法做一套关于ASP.NET CORE整体学习度路线,整体来说国内的环境的.NET生态环境还是相对比较严峻的,但是干一行爱一行,还是希望更多人加入 ...
- ASP.NET Core 学习笔记 第五篇 ASP.NET Core 中的选项
前言 还记得上一篇文章中所说的配置吗?本篇文章算是上一篇的延续吧.在 .NET Core 中读取配置文件大多数会为配置选项绑定一个POCO(Plain Old CLR Object)对象,并通过依赖注 ...
- Asp.net Core学习笔记
之前记在github上的,现在搬运过来 变化还是很大的,感觉和Nodejs有点类似,比如中间件的使用 ,努力学习ing... 优点 不依赖IIS 开源和跨平台 中间件支持 性能优化 无所不在的依赖注入 ...
- ASP.NET Core 学习笔记 第三篇 依赖注入框架的使用
前言 首先感谢小可爱门的支持,写了这个系列的第二篇后,得到了好多人的鼓励,也更加坚定我把这个系列写完的决心,也能更好的督促自己的学习,分享自己的学习成果.还记得上篇文章中最后提及到,假如服务越来越多怎 ...
- ASP.NET Core 学习笔记 第四篇 ASP.NET Core 中的配置
前言 说道配置文件,基本大多数软件为了扩展性.灵活性都会涉及到配置文件,比如之前常见的app.config和web.config.然后再说.NET Core,很多都发生了变化.总体的来说技术在进步,新 ...
- Asp.net core 学习笔记 ( Data protection )
参考 : http://www.cnblogs.com/xishuai/p/aspnet-5-identity-part-one.html http://cnblogs.com/xishuai/p/a ...
- Asp.net core 学习笔记 SignalR
refer : https://kimsereyblog.blogspot.com/2018/07/signalr-with-asp-net-core.html https://github.com/ ...
- Asp.net core (学习笔记 路由和语言 route & language)
https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/routing?view=aspnetcore-2.1 https://doc ...
随机推荐
- oracle 11g亿级复杂SQL优化一例(数量级性能提升)
自从16年之后,因为工作原因,项目中就没有再使用oracle了,最近最近支持一个项目,又要开始负责这块事情了.最近在跑性能测试,配置全部调好之后,不少sql还存在性能低下的问题,主要涉及执行计划的不合 ...
- 【题解】Luogu P4679 [ZJOI2011]道馆之战
原题传送门 码农题树剖好题,口袋妖怪是个好玩的游戏 这道题要用树链剖分,我博客里有对树链剖分的详细介绍 下文左右就代表树的节点按dfs序后的左右,上.下分别表示每个节点的A.B区域 考虑在链上的情况, ...
- Linux 系统下安装 python-skimage
Linux 系统下安装 python-skimage 安装必须的依赖 // python-mumpy // python-scipy // python-matplotlib $ sudo apt-g ...
- mysqladmin 使用
1.第一次没有密码 mysqladmin -u root -p password aook 2.已经有密码的情况下 mysqladmin -u root -paook password aook**0 ...
- POJ 2387 Til the Cows Come Home 【最短路SPFA】
Til the Cows Come Home Description Bessie is out in the field and wants to get back to the barn to g ...
- loj#2305. 「NOI2017」游戏 2-sat
链接 https://loj.ac/problem/2305 https://www.luogu.org/problemnew/show/P3825 思路 3-sat神马的就不要想了,NP问题 除去x ...
- 洛谷1968美元汇率 dp
P1968 美元汇率 dp 题目描述 在以后的若干天里戴维将学习美元与德国马克的汇率.编写程序帮助戴维何时应买或卖马克或美元,使他从100美元开始,最后能获得最高可能的价值. 输入输出格式 输入格式: ...
- HDU 4366 Successor(dfs序 + 分块)题解
题意:每个人都有一个上司,每个人都有能力值和忠诚值,0是老板,现在给出m个询问,每次询问给出一个x,要求你找到x的所有直系和非直系下属中能力比他高的最忠诚的人是谁 思路:因为树上查询很麻烦,所以我们直 ...
- 【做题】NOWCODER142A Ternary String——数列&欧拉定理
题意:你有一个长度为\(n\),且仅由012构成的字符串.每经过一秒,这个字符串所有1后面会插入一个0,所有2后面会插入一个1,然后会删除第一个元素.求这个字符串需要多少秒变为空串,对\(10^9+7 ...
- 【做题】CFedu41G. Partitions——推式子
实际上这题的题面还是颇有意思,对两个划分不同的定义暗示了第二类斯特林数,模数是\(1000000007\)又表明这题不是NTT. 那么一开始的想法是考虑每个集合的贡献.设这个集合为\(S\),那么它的 ...