HTML5技术

ASP.NET Core MVC上传、导入、导出知多少 - Jeffcky(2)

字号+ 作者:H5之家 来源:H5之家 2017-03-02 18:01 我要评论( )

项目中需要用到批量导入和导出于是进行了一点研究,.net core刚出世时还未有对于.net core中Excel的导出,但是见过园中有热心园友分享并制作了.net core中导出Excel,但是博主发现在2月19号有老外已针对.net core的

项目中需要用到批量导入和导出于是进行了一点研究,.net core刚出世时还未有对于.net core中Excel的导出,但是见过园中有热心园友分享并制作了.net core中导出Excel,但是博主发现在2月19号有老外已针对.net core的Excel导出和导入目前版本为1.3基于EPPlus,功能和EPPlus差不多,不过是移植到了.net core中,下面我们一起来看看。首先我们下载EPPlus.Core程序包,如下:

我们直接上导出代码:

[HttpGet] [Route()] public string Export() { string sWebRootFolder = _hostingEnvironment.WebRootPath; ; , Request.Scheme, Request.Host, sFileName); FileInfo file = new FileInfo(Path.Combine(sWebRootFolder, sFileName)); if (file.Exists) { file.Delete(); file = new FileInfo(Path.Combine(sWebRootFolder, sFileName)); } using (ExcelPackage package = new ExcelPackage(file)) { // add a new worksheet ExcelWorksheet worksheet = package.Workbook.Worksheets.Add(); //sheet header worksheet.Cells[; worksheet.Cells[; worksheet.Cells[; //Add values worksheet.Cells[].Value = 1000; worksheet.Cells[].Value = ; worksheet.Cells[].Value = 18; worksheet.Cells[].Value = 1001; worksheet.Cells[].Value = ; worksheet.Cells[].Value = 19; package.Save(); //Save the workbook. } return URL; }

 

这里我们进行统一封装下来进行导出只需要设置导出属性和列表数据即可,如下:

public IActionResult Export() { var properties = new PropertyByName<Person>[] { ,d=>d.Id), ,d=>d.Name), ,d=>d.Age) }; var list = new List<Person>() { ,Age=18 }, ,Age=19 }, ,Age=20 }, ,Age=21 }, ,Age=22 } }; var bytes = _ExportManager.ExportToXlsx<Person>(properties, list); return new FileContentResult(bytes, MimeTypes.TextXlsx); }

 

说完导出我们再来看导入,我们来读取刚刚导入的数据返回到页面上:

public string Import() { string sWebRootFolder = _hostingEnvironment.WebRootPath; ; FileInfo file = new FileInfo(Path.Combine(sWebRootFolder, sFileName)); try { using (ExcelPackage package = new ExcelPackage(file)) { StringBuilder sb = new StringBuilder(); ExcelWorksheet worksheet = package.Workbook.Worksheets[1]; int rowCount = worksheet.Dimension.Rows; int ColCount = worksheet.Dimension.Columns; bool bHeaderRow = true; for (int row = 1; row <= rowCount; row++) { for (int col = 1; col <= ColCount; col++) { if (bHeaderRow) { sb.Append(worksheet.Cells[row, col].Value.ToString() + ); } else { sb.Append(worksheet.Cells[row, col].Value.ToString() + ); } } sb.Append(Environment.NewLine); } return sb.ToString(); } } catch (Exception ex) { + ex.Message; } }

此时我们再来对导入进行统一封装下,如下:

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 如何一秒钟从头构建一个 ASP.NET Core 中间件 - Savorboard

    如何一秒钟从头构建一个 ASP.NET Core 中间件 - Savorboard

    2017-02-23 16:01

  • 用agular2做文件上传功能杂记-遁地龙卷风 - 遁地龙卷风

    用agular2做文件上传功能杂记-遁地龙卷风 - 遁地龙卷风

    2017-02-14 15:00

  • ASP.NET Core MVC压缩样式、脚本及总是复制文件到输出目录 - JeffckyWang

    ASP.NET Core MVC压缩样式、脚本及总是复制文件到输出目录 - Jeffcky

    2017-02-02 12:07

  • 棒!使用.NET Core构建3D游戏引擎 - Savorboard

    棒!使用.NET Core构建3D游戏引擎 - Savorboard

    2017-01-29 08:03

网友点评
F