[HttpPost]
public ActionResult ExpEleAcc(string linknos)
{
string filenname = null;
CommonResult<string> result = new CommonResult<string>();
try
{
string path = WebSettings.TempDirectory+ "Download" ;
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
string template = "****导出模板.xls";
string tempaltePath = $"{env.WebRootPath}{Path.DirectorySeparatorChar}Template{Path.DirectorySeparatorChar}Export{Path.DirectorySeparatorChar}Dec导出模板{Path.DirectorySeparatorChar}{template}";
string guid = CommonHelper.GetGuid();
filenname = Path.Combine(path, "电子底账" + guid + ".xls");
FileInfo info = new FileInfo(tempaltePath);
info.CopyTo(filenname);
HSSFWorkbook hssfworkbookDown;
//读入刚复制的要导出的excel文件
using (FileStream file = new FileStream(filenname, FileMode.Open, FileAccess.Read))
{
hssfworkbookDown = new HSSFWorkbook(file);
file.Close();
}
DecEHeadService DecEHeadService = new DecEHeadService();
//file = new FileStream(filenname, FileMode.Open, FileAccess.ReadWrite);
List<ExpLedgerField> FirstSheetList = DecEHeadService.GetFirstSheetList(linknos, _appUser.CurrentCorpInfo.Site);
List<ExpLedgerField> SecondSheetList = DecEHeadService.GetSecondSheetList(linknos, _appUser.CurrentCorpInfo.Site);
List<ExpLedgerField> LastSheetList = DecEHeadService.GetLastSheetList(linknos, _appUser.CurrentCorpInfo.Site);

// HSSFSheet sheet = (HSSFSheet)hssfworkbookDown.GetSheetAt(0);
//通过sheet 名字得到sheet页
// HSSFWorkbook workbook = new HSSFWorkbook();
// HSSFSheet sheet = (HSSFSheet)workbook.GetSheet("sheet1");//读取名称为sheet1的sheet

HSSFSheet FirstSheet = (HSSFSheet)hssfworkbookDown.GetSheet("商品信息");
HSSFSheet SecondSheet = (HSSFSheet)hssfworkbookDown.GetSheet("许可证信息");
HSSFSheet LastSheet = (HSSFSheet)hssfworkbookDown.GetSheet("许可证VIN信息");

// string create = "2" + "-" + (i + 1).ToString();
// sheet.CopyTo(hssfworkbookDown, create, true, true);
HSSFCellStyle cellstyle = (HSSFCellStyle)hssfworkbookDown.CreateCellStyle();

//第一个页签关于表体得循环
for (int i = 0; i < FirstSheetList.Count; i++)
{

//比较重要的一点  需要创建行
IRow row = FirstSheet.CreateRow(i+3);
if (FirstSheetList[i].G_NO!=null)
{

//获得行   
HSSFCell cell1 = (HSSFCell)FirstSheet.GetRow(i + 3).CreateCell(0);
cell1.SetCellValue(FirstSheetList[i].G_NO);
}

}

//第二个页签关于表体得循环

for (int i = 0; i < SecondSheetList.Count; i++)
{
IRow row = SecondSheet.CreateRow(i + 2);
if (SecondSheetList[i].G_NO != null)
{
HSSFCell cell1 = (HSSFCell)SecondSheet.GetRow(i + 2).CreateCell(0);
cell1.SetCellValue(SecondSheetList[i].G_NO);
}
}

//第三个页签关于表体得循环

for (int i = 0; i < LastSheetList.Count; i++)
{
IRow row = LastSheet.CreateRow(i + 2);
if (LastSheetList[i].G_NO != null)
{
HSSFCell cell1 = (HSSFCell)LastSheet.GetRow(i + 2).CreateCell(0);
cell1.SetCellValue(LastSheetList[i].G_NO);
}

}

//创建文件
FileStream files = new FileStream(filenname, FileMode.Create);
hssfworkbookDown.Write(files);
files.Close();
files.Dispose();
result.Success = true;
// tempaltePath = $"{env.WebRootPath}{Path.DirectorySeparatorChar}Template{Path.DirectorySeparatorChar}Export{Path.DirectorySeparatorChar}Dec导出模板{Path.DirectorySeparatorChar}{template}";

//tempaltePath 模板路径
//filenname 下载路径
//浏览器识别的路径:window.location.href="http://localhost:33795//\\Temp\Export\\导出模板_快递无LOT-20190928062051.xls";
string host = "";
// string host =this.Request.Host.Value + @"//\\Temp\\Download\\"+"电子底账" + guid + ".xls";
if (Request.IsHttps == true)
{
host = @"https://" + this.Request.Host.Value + @"//\\\temp\\Download\\" + "电子底账" + guid + ".xls";
}
else
{
host = @"http://" + this.Request.Host.Value + @"//\\\temp\\Download\\" + "电子底账" + guid + ".xls";
}

result.Data = host;
// return Json(result);

#region 拼接成浏览器识别的路径

//浏览器跳转路径: http://localhost:33795//\\\\Temp\\Export\\\\快递无LOT.NOT_NO-20190927015613.xls

//文件所在的实际物理路径(绝对路径) D:\new v3\src\Happ.Web\Happ.Web.UI\Temp\Export

//获取当前端口, 当前端口名称 , 文件所在文件夹/Temp/Export/aaa.xml 转换为浏览器识别的路径

//Path = BaseController.Host + BaseController.ApplicationPath+ "\\\\Temp\\Export\\\\"+Path;
//浏览器识别的路径:window.location.href="http://localhost:33795//\\Temp\Export\\导出模板_快递无LOT-20190928062051.xls";
#endregion

}
catch (Exception ex)
{
throw ex;
}
finally
{

}
return Json(result);
}

关于简单的Excel多页签底层导出_电子底账导出为例(.net core)的更多相关文章

  1. 显示 EXCEL 的页签列表

    如果你的EXCEL表有很多页签,反复点击左右箭头可能会很费时间. 不妨试试在 左箭头 或者 右箭头 上点击 右键,会有页签列表弹出.

  2. 使用原生js与jQuery分别实现一个简单的tab页签

    tab页签通常适用于空间有限而内容较多同时兼顾页面美观度不给用户一种信息过量视觉疲劳的情形.使用面非常广,下面我们用两种方法简单实现之. 首先,构建页面元素.页签的可点击部分我们通常用列表来承载,包括 ...

  3. Excel宏录制、数据透视表、合并多个页签

    前段时间做数据分析的时候,遇到很多报表文件需要处理,在此期间学习了很多Excel操作,特此做笔记回顾. Excel宏录制 打开开发者工具 打开Excel文件,选择”文件”-->“选项”--> ...

  4. C#实现Excel操作——添加页签Sheet

    C#实现对Excel操作,根据数据的类型不同或者来源不同会放在不同的页签中,C#实现添加页签代码如下:(path为文档保存的地址,dt为要处理的源数据) public void addSheet(st ...

  5. JavaScript选项卡/页签/Tab的实现

    选项卡,也称页签,英文用Tab(Module-Tabs)表示.Tab将不同的内容重叠放在一个布局块内,重叠的内容区里每次只有其中一个是可见的. Tab可以在相同的空间里展示更多的信息,它把相似的主题分 ...

  6. 利用Apache POI 实现简单的Excel表格导出

    1.利用POI API实现简单的Excel表格导出 首先假设一个学生实体类: package com.sun.poi.domain; import java.io.Serializable; impo ...

  7. Winfon 页签切换及窗体控件自适应

    由于公司的业务调整,最近不仅开发bs,还有不熟悉的cs,人手也不足,项目还多,对于cs来说,算是小白,虽然是一个人,也是硬着头皮写,拖拽控件,自定义控件.一个项目下来,对cs有了很深的认识,这里好好感 ...

  8. tabpanel如何隐藏页签表头以及基本用法总结

    tabpanel是extjs中一种比较常用的布局容器控件,也比较简单. ///1:相关的插件, var tabScrollerMenu = Ext.create("Ext.ux.TabScr ...

  9. Android实现图片滚动控件,含页签功能,让你的应用像淘宝一样炫起来

    首先题外话,今天早上起床的时候,手滑一下把我的手机甩了出去,结果陪伴我两年半的摩托罗拉里程碑一代就这么安息了,于是我今天决定怒更一记,纪念我死去的爱机. 如果你是网购达人,你的手机上一定少不了淘宝客户 ...

随机推荐

  1. vue+element UI递归方式实现多级导航菜单

    介绍 这是一个是基于element-UI的导航菜单组件基础上,进行了二次封装的菜单组件,该组件以组件递归的方式,实现了可根据从后端接收到的json菜单数据,动态渲染多级菜单的功能. 使用方法 由于该组 ...

  2. P2934 [USACO09JAN]安全出行

    图论瞎搞...... solution: 按例化简:给定一个无向图,保证单源最短路唯一,求每个点到1号点的最短路最后一条边被封锁的情况下的最短路 乍一看,应该是次短路,但是稍微用脚趾头想想都能发现不是 ...

  3. C++中对C的扩展学习新增语法——lambda 表达式(匿名函数)

    1.匿名函数基础语法.调用.保存 1.auto lambda类型 2.函数指针来保存注意点:[]只能为空,不能写东西 3.std::function来保存 2.匿名函数捕捉外部变量(值方式.引用方式) ...

  4. 一个ip, 两个域名, 两个ssl, 访问多个不同的项目

    在前面一篇中说过, 入了好几个坑. 后来使用了nginx+tomcat配置的方式. 终于成功了. 因为头一次使用nginx, 不知道具体怎么操作, 于是我在操作的时候, 按照以下几个步骤执行的: 导航 ...

  5. lqb 基础练习 字母图形 (循环)

    基础练习 字母图形 时间限制:1.0s   内存限制:256.0MB     问题描述 利用字母可以组成一些美丽的图形,下面给出了一个例子: ABCDEFG BABCDEF CBABCDE DCBAB ...

  6. nyoj 276-比较字母大小 (顺序比较, 逆序输出)

    276-比较字母大小 内存限制:64MB 时间限制:3000ms 特判: No 通过数:13 提交数:15 难度:1 题目描述: 任意给出两个英文字母,比较它们的大小,规定26个英文字母A,B,C.. ...

  7. 在代码生成工具Database2Sharp中使用ODP.NET(Oracle.ManagedDataAccess.dll)访问Oracle数据库,实现免安装Oracle客户端,兼容32位64位Oracle驱动

    由于我们开发的辅助工具Database2Sharp需要支持多种数据库,虽然我们一般使用SQLServer来开发应用较多,但是Oracle等其他数据库也是常用的数据库之一,因此也是支持使用Oracle等 ...

  8. C语言|博客作业04

    这个作业属于哪个课程 C语言程序设计II 这个作业的要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/9768 我在这个课程的 ...

  9. 详解Redis RDB持久化、AOF持久化

    1.持久化 1.1 持久化简介 持久化(Persistence),持久化是将程序数据在持久状态和瞬时状态间转换的机制,即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘). 1.2 red ...

  10. vue cli3.0 封装组件全局引入js文件并发布到npm

    首先用 vue create创建一个项目 当前的项目目录是这样的: 首先需要创建一个 packages 目录,用来存放组件 然后将 src 目录改为 examples 用作示例 二.修改配置 启动项目 ...