相关文章推荐
玩足球的企鹅  ·  新型光芯片可执行深度神经网络关键计算·  1 年前    · 
长情的风衣  ·  云智一体,深入生命科学 - 知乎·  2 年前    · 
爱听歌的手术刀  ·  Pytorch的to(device)用法-腾 ...·  2 年前    · 
直爽的遥控器  ·  c#获取word文件页数、字数 - 张伟大 ...·  2 年前    · 
玉树临风的斑马  ·  5536. 最大网络秩 - XXXSANS ...·  3 年前    · 
Code  ›  Asp .Net Core Excel导入和导出开发者社区
社区功能 col core
https://cloud.tencent.com/developer/article/1503632
欢快的乌冬面
2 年前
作者头像
小世界的野孩子
0 篇文章

Asp .Net Core Excel导入和导出

前往专栏
腾讯云
备案 控制台
开发者社区
学习
实践
活动
专区
工具
TVP
文章/答案/技术大牛
写文章
社区首页 > 专栏 > .Net、.Net Core 、Docker > 正文

Asp .Net Core Excel导入和导出

发布 于 2019-09-11 14:54:38
2.4K 0
举报

ASP .Net Core使用 EPPlus 实现Api导入导出,这里使用是EPPlus 4.5.2.1版本,.Net Core 2.2。在linux上运行的时候需要安装 libgdiplus 。

下面我们看下如何实现导出导入的功能。

新建项目ASP.NET Core Web Api 、添加Test类

public class Test
   public int Id { get; set; }
   public string Name { get; set; }
   public int Age { get; set; }
}

导出Excel文件

新建控制器ExecelController

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using OfficeOpenXml;
namespace WebApplication5.Controllers
[ApiController]
    public class ExecelController : ControllerBase
        [Route("api/Execel/TOExecel")]
        public IActionResult TOExecel()
            var list = new List<Test>();
            list.Add(new Test()
                Id = 1,
                Name = "Test",
                Age = 22,
            byte[] fileContents;
            using (ExcelPackage package = new ExcelPackage())
                ExcelWorksheet worksheet = package.Workbook.Worksheets.Add(".Net Core 导出");
                worksheet.Cells[1, 1].Value = "序号";
                worksheet.Cells[1, 2].Value = "Id";
                worksheet.Cells[1, 3].Value = "名称";
                worksheet.Cells[1, 4].Value = "年龄";
                int i = 2;
                foreach (var item in list)
                    worksheet.Cells["A" + i].Value = i - 1;
                   worksheet.Cells["B" + i].Value = item.Id;
                    worksheet.Cells["C" + i].Value = item.Name;
                    worksheet.Cells["D" + i].Value = item.Age;
                    i = i + 1;
                fileContents = package.GetAsByteArray();
                if (fileContents == null || fileContents.Length == 0)
                    return NotFound();
            return File(fileContents, "application/ms-excel", $"{Guid.NewGuid().ToString()}.xlsx");
}

导入Excel文件

[Route("api/Execel/Import")]
        public async Task<IActionResult> Import(IFormFile excelFile)
            var msg = "";
            if (excelFile == null || excelFile.Length <= 0)
                msg = "请选择导入文件!";
                return Ok(msg);
            if (!Path.GetExtension(excelFile.FileName).Equals(".xlsx", StringComparison.OrdinalIgnoreCase))
                msg = "请选择导入文件为.xlsx的后缀名!";
                return Ok(msg);
                using (var stream = new MemoryStream())
                    await excelFile.CopyToAsync(stream);
                     using (var package = new ExcelPackage(stream))
                        StringBuilder sb = new StringBuilder();
                        ExcelWorksheet worksheet = package.Workbook.Worksheets[0];
                        int rowCount = worksheet.Dimension.Rows;
                        int ColCount = worksheet.Dimension.Columns;
                        bool bHeaderRow = true;
                        for (int row = 2; row <= rowCount; row++)
                            Test model = new Test();
                            for (int col = 1; col <= ColCount; col++)
                                if (bHeaderRow)
                                    switch (col)
                                        case 1:
                                            model.Id = int.Parse(worksheet.Cells[row, col].Value.ToString());
                                            break;
                                        case 2:
                                            model.Name = worksheet.Cells[row, col].Value.ToString();
                                            break;
                                         case 3:
                                            model.Age = int.Parse(worksheet.Cells[row, col].Value.ToString());
                                            break;
                                    switch (col)
                                        case 1:
                                            model.Id = int.Parse(worksheet.Cells[row, col].Value.ToString());
                                            break;
                                        case 2:
                                            model.Name = worksheet.Cells[row, col].Value.ToString();
                                            break;
                                         case 3:
                                            model.Age = int.Parse(worksheet.Cells[row, col].Value.ToString());
                                           break;
                            //插入model即可
                msg = "导入成功!";
                return Ok(msg);
 
推荐文章
玩足球的企鹅  ·  新型光芯片可执行深度神经网络关键计算
1 年前
长情的风衣  ·  云智一体,深入生命科学 - 知乎
2 年前
爱听歌的手术刀  ·  Pytorch的to(device)用法-腾讯云开发者社区-腾讯云
2 年前
直爽的遥控器  ·  c#获取word文件页数、字数 - 张伟大 - 博客园
2 年前
玉树临风的斑马  ·  5536. 最大网络秩 - XXXSANS - 博客园
3 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号