ASP.NET Core使用EPPlus操作Excel
1.前言
本篇文章通过ASP.NET Core的EPPlus包去操作Excel(导入导出),其使用原理与NPOI类似,导出Excel的时候不需要电脑上安装office,非常好用
2.使用
新建一个ASP.NET Core Web应用程序(模型视图控制器),还有一个类库,SDK2.1版本,解决方案如下
3.在EPPlusCommon类库中创建一个EPPlusHelper类,包括两个方法,导入和读取数据
using OfficeOpenXml;
using OfficeOpenXml.Style;
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.IO;
using System.Text;
namespace EPPlusCommon
{
public class EPPlusHelper
{
private static int i; /// <summary>
/// 导入数据到Excel中
/// </summary>
/// <param name="fileName"></param>
/// <param name="ds"></param>
public static bool ImportExcel(string fileName, DataSet ds)
{
if (ds == null || ds.Tables.Count == )
{
return false;
}
FileInfo file = new FileInfo(fileName);
if (file.Exists)
{
file.Delete();
file = new FileInfo(fileName);
}
//在using语句里面我们可以创建多个worksheet,ExcelPackage后面可以传入路径参数
//命名空间是using OfficeOpenXml
using (ExcelPackage package = new ExcelPackage(file))
{
foreach (DataTable dt in ds.Tables)
{
//创建工作表worksheet
ExcelWorksheet worksheet = package.Workbook.Worksheets.Add(dt.TableName);
//给单元格赋值有两种方式
//worksheet.Cells[1, 1].Value = "单元格的值";直接指定行列数进行赋值
//worksheet.Cells["A1"].Value = "单元格的值";直接指定单元格进行赋值
worksheet.Cells.Style.Font.Name = "微软雅黑";
worksheet.Cells.Style.Font.Size = ;
worksheet.Cells.Style.ShrinkToFit = true;//单元格自动适应大小
for (int i = ; i < dt.Rows.Count; i++)
{
for (int j = ; j < dt.Columns.Count; j++)
{
worksheet.Cells[i + , j + ].Value = dt.Rows[i][j].ToString();
}
}
using (var cell = worksheet.Cells[, , , dt.Columns.Count])
{
//设置样式:首行居中加粗背景色
cell.Style.Font.Bold = true; //加粗
cell.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center; //水平居中
cell.Style.VerticalAlignment = ExcelVerticalAlignment.Center; //垂直居中
cell.Style.Font.Size = ;
cell.Style.Fill.PatternType = ExcelFillStyle.Solid; //背景颜色
cell.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(, , ));//设置单元格背景色
}
}
//保存
package.Save();
}
return true;
} /// <summary>
/// 读取Excel数据
/// </summary>
/// <param name="fileName"></param>
public static string ReadExcel(string fileName)
{
StringBuilder sb = new StringBuilder();
FileInfo file = new FileInfo(fileName);
try
{
using (ExcelPackage package = new ExcelPackage(file))
{
var count = package.Workbook.Worksheets.Count;
for (int k = ; k <= count; k++) //worksheet是从1开始的
{
var workSheet = package.Workbook.Worksheets[k];
sb.Append(workSheet.Name);
sb.Append(Environment.NewLine);
int row = workSheet.Dimension.Rows;
int col = workSheet.Dimension.Columns;
for (int i = ; i <= row; i++)
{
for (int j = ; j <= col; j++)
{
sb.Append(workSheet.Cells[i, j].Value.ToString() + "\t");
}
sb.Append(Environment.NewLine);
}
sb.Append(Environment.NewLine);
sb.Append(Environment.NewLine);
}
}
}
catch (Exception ex)
{
return "An error had Happen";
}
return sb.ToString();
}
}
}
代码片段已经给出了一些注释,对于Excel的更多样式设置可以参考博客
4.新建一个ExcelController(用于读取和导入Excel),代码如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using EPPlusCommon;
using Microsoft.AspNetCore.Hosting;
using System.IO;
using EPPlusWeb.Models; namespace EPPlusWeb.Controllers
{
public class ExcelController : Controller
{
private readonly IHostingEnvironment _hosting;
public ExcelController(IHostingEnvironment hosting)
{
_hosting = hosting;
}
public IActionResult Import()
{
string folder = _hosting.WebRootPath;
string fileName = Path.Combine(folder, "Excel", "Test.xlsx");
bool result = EPPlusHelper.ImportExcel(fileName, ExcelData.GetExcelData());
string str = result ? "导入Excel成功:" + fileName : "导入失败";
return Content(str);
}
public IActionResult Read()
{
string folder = _hosting.WebRootPath;
string fileName = Path.Combine(folder, "Excel", "Test.xlsx");
string result = EPPlusHelper.ReadExcel(fileName);
return Content(result);
}
}
}
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Threading.Tasks; namespace EPPlusWeb.Models
{
public class ExcelData
{
public static DataSet GetExcelData()
{
DataSet ds = new DataSet();
string[,] infos =
{
{ "","刘备","男","计算机科学与工程学院","计算机科学与技术"},
{ "","关羽","男","计算机科学与工程学院","通信工程"},
{ "","张飞","男","数学与统计学院","信息与计算科学"},
{ "","小乔","女","文学院","汉语言文学"}
};
string[,] scores =
{
{ "","刘备","","",""},
{ "","关羽","","",""},
{ "","张飞","","",""},
{ "","小乔","","",""}
};
DataTable stuInfoTable = new DataTable
{
TableName = "学生信息表"
};
stuInfoTable.Columns.Add("学号", typeof(string));
stuInfoTable.Columns.Add("姓名", typeof(string));
stuInfoTable.Columns.Add("性别", typeof(string));
stuInfoTable.Columns.Add("学院", typeof(string));
stuInfoTable.Columns.Add("专业", typeof(string));
stuInfoTable.Rows.Add("学号", "姓名", "性别", "学院", "专业");
for (int i = ; i < infos.GetLength(); i++)
{
DataRow row = stuInfoTable.NewRow();
for (int j = ; j < infos.GetLength(); j++)
{
row[j] = infos[i, j];
}
stuInfoTable.Rows.Add(row);
}
ds.Tables.Add(stuInfoTable); DataTable stuScoreTable = new DataTable
{
TableName = "学生成绩表"
};
stuScoreTable.Columns.Add("学号", typeof(string));
stuScoreTable.Columns.Add("姓名", typeof(string));
stuScoreTable.Columns.Add("语文", typeof(string));
stuScoreTable.Columns.Add("数学", typeof(string));
stuScoreTable.Columns.Add("英语", typeof(string));
stuScoreTable.Rows.Add("学号", "姓名", "语文", "数学", "英语");
for (int i = ; i < scores.GetLength(); i++)
{
DataRow row = stuScoreTable.NewRow();
for (int j = ; j < scores.GetLength(); j++)
{
row[j] = scores[i, j];
}
stuScoreTable.Rows.Add(row);
}
ds.Tables.Add(stuScoreTable);
return ds;
}
}
}
5.相关结果如下
本文章代码已经放在github:https://github.com/xs0910/.NET-Core-EPPlus
ASP.NET Core使用EPPlus操作Excel的更多相关文章
- ASP.NET Core使用EPPlus导入导出Excel
开发过程中,经常会遇到导入导出数据的需求,本篇博客介绍在.NET Core中如何使用EPPlus组件导入导出Excel EPPlus: EPPlus是使用Open Office XML格式(xlsx) ...
- 使用EPPLUS操作EXcel
使用EPPLUS操作EXcel 时间 2014-11-06 19:28:01 姜糖水 原文 http://www.cnphp6.com/archives/58648 主题 Excel 1 下载Ep ...
- C#使用第三方组件Epplus操作Excel表
Epplus操作Excel基础详解 1.什么是Epplus Epplus是一个使用Open Office XML文件格式,能读写Excel2007/2010文件的开源组件,在导出Excel的时候不需要 ...
- Asp.Net Core 静态文件目录操作
一.默认静态文件处理 Asp.Net Core的默认处理方式,将所有的静态文件都放在wwwroot文件夹中 1.默认配置,在启动文件Startup中 public void Configure(IAp ...
- 使用LinqToExcel和EPPlus操作excel
1.使用LinqToExcel LinqToExcel是一个.net framework平台下开源项目,它主要实现了LINQ的语法查询Excel电子表格.类型之前的LINQToXXX如果你是LINQ语 ...
- Asp.Net中使用OpenRowSet操作Excel表,导入Sql Server(实例)
有两种接口可供选择:Microsoft.Jet.OLEDB.4.0(以下简称 Jet 引擎)和Microsoft.ACE.OLEDB.12.0(以下简称 ACE 引擎). Jet 引擎大家都很熟悉,可 ...
- 十二个 ASP.NET Core 例子——配置操作
目录: 简单配置(利用configration 键值读取) 使用选项和配置对象(自定义类绑定配置文件实现读取) IOptionsSnapshot(配置文件更改时也变化) 内存数据放到配置对象中 实体框 ...
- c#用EPPLUS操作excel
参考: http://www.cnblogs.com/rumeng/p/3785748.html http://www.cnblogs.com/libla/p/5824296.html#3818995 ...
- Asp.Net Core File的操作
FileOption 内置类(通过服务注入) 该操作类的功能是实现对文件的删除,修改查询功能,该类基本完成了对文件的操作,同样是用最简单的代码实现了文件操作功能.
随机推荐
- IBM MQ 与spring的整合
文件名:applicationContext-biz-mq.xml 新浪博客把里面的代码全部转换成HTML了,所以无法粘贴 可以查看CSDN里面的:http://blog.csdn.net/xiazo ...
- 【原创】Silverlight的ComboBox.SelectValue无法赋值
前几天开发中 给ComboBox的SelectValue属性赋值是,老是赋不上去.之前SelectValue为Null,执行完调试看下,还是Null.很诡异 ComboBox的SelectVa ...
- 局域网代理通过wget下载
下载方法: wget -r -p -np -k http://ftp.loongnix.org/os/Fedora13-o32/RPMS/mipsel/ -r, --recursive(递归) ...
- 讲真的,千万别得罪会PS的人
传说中有一种软件炒鸡可怕 那就是PS,专业术语是photoshop! 它能让你貌美如花 也能让你瞬间丑得掉渣 更可怕的是网络上大神的出现 简直让我们难以想象的厉害! 下面大家一起来欣赏一下 那些大神帮 ...
- Cordova学习
Cordova学习 ui线程里处理耗时逻辑 runOnUiThread(new Runnable() { public void run() { //处理 } });
- sdkbox 接facebook
详情参见:http://sdkbox-doc.github.io/en/plugins/facebook/v3-js/#manual-integration 一步不落然后 *** Terminatin ...
- servlet-cookie
/** * Cookie学习; * 作用:解决了发送的不同请求的数据共享问题 * 使用: * 1.Cookie的创建和存储 * ...
- 2018.08.17 洛谷P3110 [USACO14DEC]驮运(最短路)
传送门 一道sb最短路,从两个起点和终点跑一边最短路之后直接枚举两人的汇合点求最小值就行了. 代码: #include<bits/stdc++.h> #define N 40005 #de ...
- 2018.08.10 atcoder No Need(线性dp)
传送门 输入一个序列an" role="presentation" style="position: relative;">anan,输入k&q ...
- hdu-1171(多重背包+二进制优化)
题目链接: 思路:找每次最多装一半的情况,注意数组范围,前几次dp开小了,一直RE. #include<iostream> #include<cstdio> #include& ...