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 ...
随机推荐
- 由Nginx反向代理引出的JCaptcha验证码验证失败的问题
搜索关键字: 1)Windows本地开发正常,部署到Linux远程服务器上JCaptcha验证失败 2)Linux远程服务器上JCpatcha验证失败 3)Nginx反向代理后JCaptcha验证失败 ...
- OC中NSLog函数输出格式罗列
格式 类型 格式 类型 格式 类型 %@ 对象 %d,%i 整数 %u 无符整数 %f 浮点 %x,%X 二进制整数 %o 八进制整数 %zu size_t %p 指针 %e 浮点(科学计算) %g ...
- zabbix server 安装部署
一:安装zabbix服务端 1.部署准备 命令:iptables -F #关闭防火墙命令:systemctl stop firewalld #关闭防火墙 设置解析,自建yum源 命令:c ...
- java比较器Comparator
1. 实现比较类 public class Comparator implements java.util.Comparator<TaskInfo>{ @Override public i ...
- Laradock 开放 workspace 端口
1.在 laradock/workspace/Dockerfile 文件的最后添加一行,申明开放端口: EXPOSE 1215; 2.在 laradock/docker-compose ...
- Laradock 下安装Beast扩展
laradock/php-fpm/Dockfile ########################################################################## ...
- Random Process Modeling_1
1. Bertrand Triangle r=1; %circle radius x0=0; y0=0; %centre of circle %points for circle t=linspace ...
- 091、Java中String类之使用“==”比较
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- wumii 爆款总结经验
在正式创办无秘之前,我们反思前几次创业失败的教训,深刻领悟两点: 第一,内容推荐的精准度取决于平台收集用户数据的能力,如果没有用户行为数据,产品无法做内容推荐,而通过简单的新闻排序,延长用户浏览单篇文 ...
- RNN、LSTM、Seq2Seq、Attention、Teacher forcing、Skip thought模型总结
RNN RNN的发源: 单层的神经网络(只有一个细胞,f(wx+b),只有输入,没有输出和hidden state) 多个神经细胞(增加细胞个数和hidden state,hidden是f(wx+b) ...