ExcelPackage导入导出,命名空间一定要是EPPlus
1.引入EPPlus.dll,旧版的是OfficeOpenXml.dll,最好使用EPPlus
2.调用 string path = UploadExecl(batchUpload.BinaryExcel, "xlsx");,获取上传的xlsx路径
3. 下载Execl
3.1 如果是<a> 标签的连接,可以将方法直接写在 href上就能直接下载
<a href="/FangAn/DetailAuditOutPut/" target="_blank" style="color:#fff;"><el-button type="primary">导出Execl</el-button></a>
后台方法调用:
byte[] result = GetExcelByte(model);
返回值为 File();
return File(result, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", model.OrderName + ".xlsx");
3.2 如果是js异步操作,需要下载的话:
后台方法调用:
byte[] result = GetExcelByte(dt, modelReturn.errMessage);
string basestr = Convert.ToBase64String(result);
返回值为base64的字符串
return basestr;
而前台,在需要多加一步操作,可以直接下载:
//res.data 为异步返回值,就是basestr
window.location.href = "data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64," + res.data;
/// <summary>
/// datatable导出
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public byte[] GetExcelByte(DataTable dt, string err)
{
using (ExcelPackage package = new ExcelPackage())
{
ExcelWorksheet workSheet = package.Workbook.Worksheets.Add("候车亭批量导入");
workSheet.Cells[1, 1].Value = "媒体类型*";
workSheet.Cells[1, 2].Value = "类型子类*";
workSheet.Cells[1, 3].Value = "媒体位置*";
for (int i = 1; i < dt.Rows.Count; i++)
{
DataRow dr = dt.Rows[i];
workSheet.Cells[i + 1, 1].Value = dr[0];
workSheet.Cells[i + 1, 2].Value = dr[1];
workSheet.Cells[i + 1, 3].Value = dr[2];
}
return package.GetAsByteArray();
}
}
/// <summary>
/// execl转成table
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public DataTable ExcelToTable(string path)
{
DataTable vTable = new DataTable();
FileInfo existingFile = new FileInfo(path);
try
{
FileInfo file = new FileInfo(path);
using (ExcelPackage package = new ExcelPackage(file))
{
ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
int vSheetCount = package.Workbook.Worksheets.Count;
//获取总Sheet页
int maxColumnNum = worksheet.Dimension.End.Column;//最大列
int minColumnNum = worksheet.Dimension.Start.Column;//最小列
int maxRowNum = worksheet.Dimension.End.Row;//最小行
int minRowNum = worksheet.Dimension.Start.Row;//最大行
DataColumn vC;
for (int j = 1; j <= maxColumnNum; j++)
{
vC = new DataColumn("A_" + j, typeof(string));
vTable.Columns.Add(vC);
}
for (int n = 1; n <= maxRowNum; n++)
{
DataRow vRow = vTable.NewRow();
for (int m = 1; m <= maxColumnNum; m++)
{
vRow[m - 1] = worksheet.Cells[n, m].Value;
}
vTable.Rows.Add(vRow);
}
}
}
catch (Exception vErr)
{
Console.WriteLine(vErr.Message);
}
return vTable;
}
/// <summary>
/// 把二进制流转成文件
/// </summary>
/// <param name="path">二进制流,类似(data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,)开头的字符串</param>
/// <param name="path">文件扩展名</param>
/// <returns></returns>
public string UploadExecl(string path, string extension)
{
string sPath = host.ContentRootPath + "\\BatchUpload";//保存的路径
if (!Directory.Exists(sPath))
{
Directory.CreateDirectory(sPath);
}
var regex = new Regex(@"data:(?<mime>[\w/\-\.]+);(?<encoding>\w+),(?<data>.*)", RegexOptions.Compiled);
var match = regex.Match(path);
var mimeType = match.Groups["mime"].Value;
var encodingCode = match.Groups["encoding"].Value;
var data = match.Groups["data"].Value;
byte[] targetFileByte = Convert.FromBase64String(data);
string[] mimeExtension = mimeType.Split('/');
string fileExtension = extension;
Random random = new Random();
//文件保存
string fileName = string.Format("{0:yyyyMMddHHmmss}{1}", DateTime.Now, random.Next());
string filePath = string.Format("{0}\\{1}.{2}", sPath, fileName, fileExtension);
FileStream file = new FileStream(filePath, FileMode.CreateNew, FileAccess.Write);
file.Write(targetFileByte,0, targetFileByte.Length);
file.Close();
return filePath;
}
ExcelPackage导入导出,命名空间一定要是EPPlus的更多相关文章
- .NET Core 中导入导出Excel
操作Excel是一个比较常见的业务场景,本篇将使用EPPlus简单演示一个导入导出的示例. EPPlus开源地址:https://github.com/EPPlusSoftware/EPPlus 在项 ...
- ASP.NET Core使用EPPlus导入导出Excel
开发过程中,经常会遇到导入导出数据的需求,本篇博客介绍在.NET Core中如何使用EPPlus组件导入导出Excel EPPlus: EPPlus是使用Open Office XML格式(xlsx) ...
- 基于EPPlus和NPOI实现的Excel导入导出
基于EPPlus和NPOI实现的Excel导入导出 CollapseNav.Net.Tool.Excel(NuGet地址) 太长不看 导入 excel 文件流将会转为 ExcelTestDto 类型的 ...
- .NET CORE webapi epplus 导入导出 (实习第一个月的笔记)
最近有个需求就是网页表格里面的数据导出到excel 于是从各位前辈的博客园搜了搜demo 大部分非为两类 都是用的插件NPOI和Eppluse ,因此在这里就介绍Eppluse 用法,还有就是在博 ...
- ASP.NET Core 导入导出Excel xlsx 文件
ASP.NET Core 使用EPPlus.Core导入导出Excel xlsx 文件,EPPlus.Core支持Excel 2007/2010 xlsx文件导入导出,可以运行在Windows, Li ...
- 建议收藏:.net core 使用导入导出Excel详细案例,精心整理源码已更新至开源模板
还记得刚曾经因为导入导出不会做而发愁的自己吗?我见过自己前同事因为一个导出改了好几天,然后我们发现虽然有开源的库但是用起来却不得心应手,主要是因为百度使用方案的时候很多方案并不能解决问题. 尤其是尝试 ...
- asp.net core web的导入导出excel功能
这里主要记录下asp.net core web页面上进行导入导出excel的操作. 主要是导入,因为现在使用的很多前端框架(例如kendo ui)本身就有导出的功能. 这里使用到EPPlus.Core ...
- ASP.NET Core导入导出Excel文件
ASP.NET Core导入导出Excel文件 希望在ASP.NET Core中导入导出Excel文件,在网上搜了一遍,基本都是使用EPPlus插件,EPPlus挺好用,但商用需要授权,各位码友若有好 ...
- thinkphp导入导出excel表单数据
在PHP项目经常要导入导出Excel表单. 先去下载PHPExcel类库文件,放到相应位置. 我在thinkphp框架中的位置为ThinkPHP/Library/Org/Util/ 导入 在页面上传e ...
随机推荐
- 微信小程序表单弹窗实例
开发中有时候会碰到需要一个表单弹窗来处理数据的提交处理,然后这次发布的这套源码就是解决这个问题! <!--button--> <view class="btn" ...
- Scrapy 中的模拟登陆
目前,大部分网站都具有用户登陆功能,其中某些网站只有在用户登陆后才能获得有价值的信息,在爬取这类网站时,Scrapy 爬虫程序先模拟登陆,再爬取内容 1.登陆实质 其核心是想服务器发送含有登陆表单数据 ...
- freeswitch install
https://freeswitch.org/confluence/display/FREESWITCH/CentOS+7+and+RHEL+7
- json object string互转
参考: https://www.cnblogs.com/guangshan/p/4459436.html JsonArray和JsonObject遍历方法 参考:https://blog.csdn.n ...
- JAVA 数据库操作工具类----sqllite
package com.asc.db; import android.content.ContentValues; import android.content.Context; import and ...
- Springboot项目的接口防刷(实例)
技术要点:springboot的基本知识,redis基本操作, 首先是写一个注解类: import java.lang.annotation.Retention; import java.lang.a ...
- 小程序行内元素且有border的情况下,根据文字宽度自动调节元素宽度
比如认识成都: <view style="display: flex;align-items: center;"> <text class="cityV ...
- Cadence套件:Capture + Allegro应用笔记
1.在Allegro中导入Netlist时,需要进行封装路径的设定: 在Setup->User Preference的Path->Library下面,设定所需封装文件(psm).焊盘文件( ...
- Linux-initramfs
1. 内核启动问题2. 解决方案2.1 ramdisk(比如initrd)2.2 tmpfs(比如initramfs)2.3 ramdisk vs ramfs2.4 临时文件系统2.4.1 观察tmp ...
- MinGW 安装与简单实例
MinGW的下载 链接: https://pan.baidu.com/s/1JiZoyFHUWoeaxCQcUXCKgg 密码: myh3 MinGW的安装 基本上都是按提示的点击下一步操作 接下来修 ...