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的更多相关文章

  1. .NET Core 中导入导出Excel

    操作Excel是一个比较常见的业务场景,本篇将使用EPPlus简单演示一个导入导出的示例. EPPlus开源地址:https://github.com/EPPlusSoftware/EPPlus 在项 ...

  2. ASP.NET Core使用EPPlus导入导出Excel

    开发过程中,经常会遇到导入导出数据的需求,本篇博客介绍在.NET Core中如何使用EPPlus组件导入导出Excel EPPlus: EPPlus是使用Open Office XML格式(xlsx) ...

  3. 基于EPPlus和NPOI实现的Excel导入导出

    基于EPPlus和NPOI实现的Excel导入导出 CollapseNav.Net.Tool.Excel(NuGet地址) 太长不看 导入 excel 文件流将会转为 ExcelTestDto 类型的 ...

  4. .NET CORE webapi epplus 导入导出 (实习第一个月的笔记)

    最近有个需求就是网页表格里面的数据导出到excel  于是从各位前辈的博客园搜了搜demo  大部分非为两类 都是用的插件NPOI和Eppluse ,因此在这里就介绍Eppluse 用法,还有就是在博 ...

  5. ASP.NET Core 导入导出Excel xlsx 文件

    ASP.NET Core 使用EPPlus.Core导入导出Excel xlsx 文件,EPPlus.Core支持Excel 2007/2010 xlsx文件导入导出,可以运行在Windows, Li ...

  6. 建议收藏:.net core 使用导入导出Excel详细案例,精心整理源码已更新至开源模板

    还记得刚曾经因为导入导出不会做而发愁的自己吗?我见过自己前同事因为一个导出改了好几天,然后我们发现虽然有开源的库但是用起来却不得心应手,主要是因为百度使用方案的时候很多方案并不能解决问题. 尤其是尝试 ...

  7. asp.net core web的导入导出excel功能

    这里主要记录下asp.net core web页面上进行导入导出excel的操作. 主要是导入,因为现在使用的很多前端框架(例如kendo ui)本身就有导出的功能. 这里使用到EPPlus.Core ...

  8. ASP.NET Core导入导出Excel文件

    ASP.NET Core导入导出Excel文件 希望在ASP.NET Core中导入导出Excel文件,在网上搜了一遍,基本都是使用EPPlus插件,EPPlus挺好用,但商用需要授权,各位码友若有好 ...

  9. thinkphp导入导出excel表单数据

    在PHP项目经常要导入导出Excel表单. 先去下载PHPExcel类库文件,放到相应位置. 我在thinkphp框架中的位置为ThinkPHP/Library/Org/Util/ 导入 在页面上传e ...

随机推荐

  1. 由Nginx反向代理引出的JCaptcha验证码验证失败的问题

    搜索关键字: 1)Windows本地开发正常,部署到Linux远程服务器上JCaptcha验证失败 2)Linux远程服务器上JCpatcha验证失败 3)Nginx反向代理后JCaptcha验证失败 ...

  2. OC中NSLog函数输出格式罗列

    格式 类型 格式 类型 格式 类型 %@ 对象 %d,%i 整数 %u 无符整数 %f 浮点 %x,%X 二进制整数 %o 八进制整数 %zu size_t %p 指针 %e 浮点(科学计算) %g ...

  3. zabbix server 安装部署

    一:安装zabbix服务端 1.部署准备 命令:iptables -F     #关闭防火墙命令:systemctl stop firewalld    #关闭防火墙 设置解析,自建yum源 命令:c ...

  4. java比较器Comparator

    1. 实现比较类 public class Comparator implements java.util.Comparator<TaskInfo>{ @Override public i ...

  5. Laradock 开放 workspace 端口

    1.在 laradock/workspace/Dockerfile 文件的最后添加一行,申明开放端口:       EXPOSE 1215;   2.在 laradock/docker-compose ...

  6. Laradock 下安装Beast扩展

    laradock/php-fpm/Dockfile ########################################################################## ...

  7. Random Process Modeling_1

    1. Bertrand Triangle r=1; %circle radius x0=0; y0=0; %centre of circle %points for circle t=linspace ...

  8. 091、Java中String类之使用“==”比较

    01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...

  9. wumii 爆款总结经验

    在正式创办无秘之前,我们反思前几次创业失败的教训,深刻领悟两点: 第一,内容推荐的精准度取决于平台收集用户数据的能力,如果没有用户行为数据,产品无法做内容推荐,而通过简单的新闻排序,延长用户浏览单篇文 ...

  10. RNN、LSTM、Seq2Seq、Attention、Teacher forcing、Skip thought模型总结

    RNN RNN的发源: 单层的神经网络(只有一个细胞,f(wx+b),只有输入,没有输出和hidden state) 多个神经细胞(增加细胞个数和hidden state,hidden是f(wx+b) ...