关于简单的Excel多页签底层导出_电子底账导出为例(.net core)
[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)的更多相关文章
- 显示 EXCEL 的页签列表
如果你的EXCEL表有很多页签,反复点击左右箭头可能会很费时间. 不妨试试在 左箭头 或者 右箭头 上点击 右键,会有页签列表弹出.
- 使用原生js与jQuery分别实现一个简单的tab页签
tab页签通常适用于空间有限而内容较多同时兼顾页面美观度不给用户一种信息过量视觉疲劳的情形.使用面非常广,下面我们用两种方法简单实现之. 首先,构建页面元素.页签的可点击部分我们通常用列表来承载,包括 ...
- Excel宏录制、数据透视表、合并多个页签
前段时间做数据分析的时候,遇到很多报表文件需要处理,在此期间学习了很多Excel操作,特此做笔记回顾. Excel宏录制 打开开发者工具 打开Excel文件,选择”文件”-->“选项”--> ...
- C#实现Excel操作——添加页签Sheet
C#实现对Excel操作,根据数据的类型不同或者来源不同会放在不同的页签中,C#实现添加页签代码如下:(path为文档保存的地址,dt为要处理的源数据) public void addSheet(st ...
- JavaScript选项卡/页签/Tab的实现
选项卡,也称页签,英文用Tab(Module-Tabs)表示.Tab将不同的内容重叠放在一个布局块内,重叠的内容区里每次只有其中一个是可见的. Tab可以在相同的空间里展示更多的信息,它把相似的主题分 ...
- 利用Apache POI 实现简单的Excel表格导出
1.利用POI API实现简单的Excel表格导出 首先假设一个学生实体类: package com.sun.poi.domain; import java.io.Serializable; impo ...
- Winfon 页签切换及窗体控件自适应
由于公司的业务调整,最近不仅开发bs,还有不熟悉的cs,人手也不足,项目还多,对于cs来说,算是小白,虽然是一个人,也是硬着头皮写,拖拽控件,自定义控件.一个项目下来,对cs有了很深的认识,这里好好感 ...
- tabpanel如何隐藏页签表头以及基本用法总结
tabpanel是extjs中一种比较常用的布局容器控件,也比较简单. ///1:相关的插件, var tabScrollerMenu = Ext.create("Ext.ux.TabScr ...
- Android实现图片滚动控件,含页签功能,让你的应用像淘宝一样炫起来
首先题外话,今天早上起床的时候,手滑一下把我的手机甩了出去,结果陪伴我两年半的摩托罗拉里程碑一代就这么安息了,于是我今天决定怒更一记,纪念我死去的爱机. 如果你是网购达人,你的手机上一定少不了淘宝客户 ...
随机推荐
- SpringBoot系列之@Conditional注解用法简介
SpringBoot系列之@Conditional注解用法简介 引用Spring官方文档的说法介绍一下@Conditional注解:Spring5.0.15版本@Conditional注解官方文档 @ ...
- WordPress 添加title中的logo
WordPress 添加title中的logo <!--网页标题左侧显示--> <link rel="icon" href="/favicon.png& ...
- Python3.7.1学习(八) Python访问SQL Server数据库
一.pip install pymssql即可安装pymssql库 二.Python连接SQL Server数据库 实例代码如下: # -*- coding:utf-8 -*-"&q ...
- 《JAVA 程序员面试宝典(第四版)》之循环、条件、概率
分享内容:关于集合的使用 书页号码:77页 题目:一个字符串中包含a~z中的多个字符,如有重复,如String data = "aavzcadfdsfsdhshgwasdfasd ...
- 逆向分析objc,所有类的信息都能在动态调试中获取。
因为objc是动态绑定的,程序运行时必须知道如何绑定,依靠的就是类描述.只要知道类描述是如何组织的就可以获取一切有用的信息.不知道是幸运还是不幸,这些信息全部都在运行的程序中.即使没有IDA这样的工具 ...
- opencv 6 图像轮廓与图像分割修复 2 使用多边形将轮廓包围
使用多边形将轮廓包围 返回外部矩阵边界(boundingRect()函数) 寻找最小包围矩形(minAreaRect()函数) 寻找最小包围圆形(minEnclosingCircle函数) 用椭圆拟合 ...
- 菜鸟手把手学Shiro之shiro认证流程
一.使用的spring boot +mybatis-plus+shiro+maven来搭建项目框架 <!--shiro--> <dependency> <groupId& ...
- 浅谈Linux中的各种锁及其基本原理
本文首发于:https://mp.weixin.qq.com/s/Ahb4QOnxvb2RpCJ3o7RNwg 微信公众号:后端技术指南针 0.概述 通过本文将了解到如下内容: Linux系统的并行性 ...
- Discovery and auto register
1.Discovery 2. auto register 2.1 agent 端配置 2.2 server 端配置
- Redis Geo HyperLogLog类型介绍
Geo类型 Redis3.2.0版本推出 可以将用户给定的地理位置信息存储起来,并对这些信息进行操作 GEOADD key longitude latitude member [longitude ...