当前位置: 首页 > news >正文

将多个EXCEL 合并一个EXCEL多个sheet

合并老版本xls

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using NPOI.HSSF.UserModel;
using System.IO;
using NPOI.XSSF.UserModel;

namespace Merge_Excel
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

            bool Result;
            string[] FileNames;
            FileNames = GetFileNames();
            if (FileNames == null) { return; }
            var fullWork = new HSSFWorkbook();
            // 遍历读取每一个订单文件
            foreach (string FileName in FileNames)
            {
                string sheetName = Path.GetFileNameWithoutExtension(FileName);//获取sheet名称
                var excelStream = new FileStream(FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                var workbook = new HSSFWorkbook(excelStream);//读取excel文件
                HSSFSheet sheet = workbook.GetSheetAt(0) as HSSFSheet;  //获取第一个工作表(sheet)
                sheet.CopyTo(fullWork, sheetName, true, true);//将报表合并至综合报表中
                excelStream.Close();
            }

            using (FileStream filestream = new FileStream(Application.StartupPath + "合并" + System.DateTime.Now.ToString("yyyyMMddhhmmss") + ".xls", FileMode.Create))
            {
                fullWork.Write(filestream);
                filestream.Close();
            }
            fullWork.Dispose();
            fullWork.Close();
            fullWork = null;
            GC.Collect();
            MessageBox.Show("合并完成");
        }

        public string[] GetFileNames()
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "所有文件|*.*|office2007及高版本|*.xlsx|office2003及老版本|*.xls";
            ofd.Multiselect = true;
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                if (ofd.FileNames != null)
                {
                    return ofd.FileNames;
                }
            }
            return null;
        }
        private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
        {
            var fullWork = new HSSFWorkbook();//最终的合并excel
            //string exportReports = hidExportReports.Value;//需要合并的Excel文件路径
            string exportReports = "";
            if (!string.IsNullOrEmpty(exportReports))
            {
                var reportArrary = exportReports.Split(',');
                try
                {
                    for (int i = 0; i < reportArrary.Length; i++)
                    {
                        string sheetName = Path.GetFileNameWithoutExtension(reportArrary[i]).Split('_')[1];//获取sheet名称
                        var excelStream = new FileStream(reportArrary[i], FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                        var workbook = new HSSFWorkbook(excelStream);//读取excel文件
                        HSSFSheet sheet = workbook.GetSheetAt(0) as HSSFSheet;  //获取第一个工作表(sheet)
                        sheet.CopyTo(fullWork, sheetName, true, true);//将报表合并至综合报表中
                    }
                    var stream = new MemoryStream();
                    fullWork.Write(stream);
                    byte[] bytes = stream.ToArray();
                    // Now that you have all the bytes representing the PDF report, buffer it and send it to the client.
                    //Response.Buffer = true;
                    //Response.Clear();
                    //Response.ContentType = "application/vnd.ms-excel";
                    //String filename = HttpUtility.UrlEncode("综合报表", Encoding.UTF8);
                    //Response.AddHeader("content-disposition", "attachment; filename=" + filename + ".xls");
                    //Response.BinaryWrite(bytes); // create the file
                    //Response.Flush(); // send it to the client to download      

                    using (FileStream filestream = new FileStream(System.IO.Path.Combine(@"D:\", "liumang.xlsx"), FileMode.Create)) { fullWork.Write(filestream); filestream.Close(); }


                    MessageBox.Show("导出完成");

                }
                catch
                {

                }
                finally
                {
                    //删除excel文件
                    for (int i = 0; i < reportArrary.Length; i++)
                    {
                        File.Delete(reportArrary[i]);
                    }
                }

            }
        }

    }
}
 

合并新版本xlsx

        private void button1_Click(object sender, EventArgs e)
        {

            bool Result;
            string[] FileNames;
            FileNames = GetFileNames();
            if (FileNames == null) { return; }
            var fullWork = new XSSFWorkbook();
            // 遍历读取每一个订单文件
            foreach (string FileName in FileNames)
            {
                string sheetName = Path.GetFileNameWithoutExtension(FileName);//获取sheet名称
                var excelStream = new FileStream(FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                var workbook = new XSSFWorkbook(excelStream);//读取excel文件
                XSSFSheet sheet = workbook.GetSheetAt(0) as XSSFSheet;  //获取第一个工作表(sheet)
                sheet.CopyTo(fullWork, sheetName, true, true);//将报表合并至综合报表中
                excelStream.Close();
            }

            using (FileStream filestream = new FileStream(Application.StartupPath + "合并" + System.DateTime.Now.ToString("yyyyMMddhhmmss") + ".xlsx", FileMode.Create))
            {
                fullWork.Write(filestream);
                filestream.Close();
            }
            fullWork.Dispose();
            fullWork.Close();
            fullWork = null;
            GC.Collect();
            MessageBox.Show("合并完成");
        }

相关文章:

将多个EXCEL 合并一个EXCEL多个sheet

合并老版本xls using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using NPOI.HSSF.UserModel; …...

【送书活动】揭秘分布式文件系统大规模元数据管理机制——以Alluxio文件系统为例

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 「推荐专栏」&#xff1a; ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄&#xff0c;vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…...

微信小程序——数据绑定

在微信小程序中&#xff0c;可以通过以下代码实现数据绑定&#xff1a; 在WXML中&#xff0c;使用双大括号{{}}绑定数据&#xff0c;将数据渲染到对应的视图中。 <view>{{message}}</view>在JS中&#xff0c;定义一个数据对象&#xff0c;并将其绑定到页面的data…...

libbpf-bootstrap安卓aarch64适配交叉编译

1.为什么移植 疑惑 起初我也认为&#xff0c;像libbpf-bootstrap这样在ebpf程序开发中很常用的框架&#xff0c;理应支持不同架构的交叉编译。尤其是向内核态的ebpf程序本身就是直接通过clang的-target btf直接生成字节码&#xff0c;各个内核上的ebpf虚拟机大同小异&#xf…...

【剑指Offer】24.反转链表

题目 定义一个函数&#xff0c;输入一个链表的头节点&#xff0c;反转该链表并输出反转后链表的头节点。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL限制&#xff1a; 0 < 节点个数 < 5000 解答 源代码 /*** Defin…...

04-docker compose容器编排

Docker Compose简介 Docker Compose是什么 ​ Compose 是Docker公司推出的一个工具软件&#xff0c;可以管理多个Dokcer容器组成一个应用。你需要定义一个YAML格式的配置文件 docker-compose.yml&#xff0c;写好多个容器之间的调用关系。然后&#xff0c;只要一个命令&#…...

通过位运算打多个标记

通过位运算打多个标记 如何在一个字段上&#xff0c;记录多个标记&#xff1f; 如何在一个字段上&#xff0c;记录不同类型的多个标记&#xff1f; 如何用较少的字段&#xff0c;记录多个标记&#xff1f; 如何在不增加字段的要求下&#xff0c;记录新增的标记&#xff1f; 在实…...

[学习笔记]Node2Vec图神经网络论文精读

参考资料&#xff1a;https://www.bilibili.com/video/BV1BS4y1E7tf/?p12&spm_id_frompageDriver Node2vec简述 DeepWalk的缺点 用完全随机游走&#xff0c;训练节点嵌入向量&#xff0c;仅能反应相邻节点的社群相似信息&#xff0c;无法反映节点的功能角色相似信息。 …...

C# Linq源码分析之Take(五)

概要 本文在C# Linq源码分析之Take&#xff08;四&#xff09;的基础上继续从源码角度分析Take的优化方法&#xff0c;主要分析Where.Select.Take的使用案例。 Where.Select.Take的案例分析 该场景模拟我们显示中将EF中与数据库关联的对象进行过滤&#xff0c;然后转换成Web…...

性能监控-grafana+prometheus+node_exporter

Prometheus是一个开源的系统监控和报警工具。它由SoundCloud开发并于2012年发布&#xff0c;后来成为了一个独立的开源项目&#xff0c;并得到了广泛的应用和支持。 Prometheus的主要功能包括采集和存储各种系统和应用程序的监控数据&#xff0c;并提供强大的查询语言PromQL来…...

(STM32H5系列)STM32H573RIT6、STM32H573RIV6、STM32H573ZIT6嵌入式微控制器基于Cortex®-M33内核

一、应用 工业&#xff08;PLC、工业电机控制、泵和压缩机&#xff09; 智能家居&#xff08;空调、冰箱、冰柜、中央警报系统、洗衣机&#xff09; 个人电子产品&#xff08;键盘、智能手机、物联网标签、跟踪设备&#xff09; 智能城市&#xff08;工业通信、照明控制、数字…...

mysql配置bind-address不生效

1、前言 因为要ip直接访问mysql&#xff0c;故去修改bind-address参数&#xff0c;按照mysql配置文件查找顺序是&#xff1a;/etc/my.cnf、/etc/mysql/my.cnf、~/.my.cnf&#xff0c;服务器上没有 /etc/my.cnf文件&#xff0c;故去修改 /etc/mysql/my.cnf文件&#xff0c;但是一…...

Linux相关指令(下)

cat指令 查看目标文件的内容 常用选项&#xff1a; -b 对非空输出行编号 -n 对输出的所有行编号 -s 不输出多行空行 一个重要思想&#xff1a;linux下一切皆文件&#xff0c;如显示器文件&#xff0c;键盘文件 cat默认从键盘中读取数据再打印 退出可以ctrlc 输入重定向<…...

Codeforces Round 855 (Div 3)(A - F)

Codeforces Round 855 (Div. 3)&#xff08;A - F&#xff09; Codeforces Round 855 (Div. 3) A. Is It a Cat?(思维) 思路&#xff1a;先把所有字母变成小写方便判断 &#xff0c; 然后把每一部分取一个字母出来 &#xff0c; 判断和‘meow’是否相同即可。 复杂度 O ( n…...

Friend.tech(FT):社交媒体金融的未来,真的如此美好吗?

Friend.tech&#xff08;FT&#xff09;是一个在2023年8月10日正式推出的社交金融平台&#xff0c;它的特点在于允许用户购买和出售创作者的股票&#xff08;shares&#xff09;&#xff0c;这些股票赋予用户访问创作者内容的权利。FT的推出引发了广泛的关注&#xff0c;吸引了…...

yolov7中Concat之后加注意力模块(最复杂的情况)

1、common.py中找到Concat模块&#xff0c;复制一份 2、要传参进来&#xff0c;dim通道数 3、然后找yolo.py模块&#xff0c;添加 4、yaml里替换 5、和加的位置也有关系...

解除百度安全验证

使用chrome浏览器用百度浏览时&#xff0c;一直弹百度安全验证&#xff1a; 在设置里进行重置&#xff1a; 然后重启浏览器就可以了。...

Codeforces Round 731 (Div 3)(A - F)

Codeforces Round 731 (Div. 3)(A - F) Dashboard - Codeforces Round 731 (Div. 3) - Codeforces A. Shortest Path with Obstacle&#xff08;思维&#xff09; 思路&#xff1a;显然要计算 A → B 之间的曼哈顿距离 &#xff0c; 要绕开 F 当且仅当 AB形成的直线平行于坐…...

Python的sort()与sorted()函数详解

目录 sort&#xff08;&#xff09;函数 sorted&#xff08;&#xff09;函数 key参数 区别 sort&#xff08;&#xff09;函数 sort()方法&#xff1a;该方法用于原地对列表进行排序&#xff0c;即直接在原始列表上进行排序操作&#xff0c;并不返回一个新的列表。 my_l…...

用python实现基本数据结构【04/4】

说明 如果需要用到这些知识却没有掌握&#xff0c;则会让人感到沮丧&#xff0c;也可能导致面试被拒。无论是花几天时间“突击”&#xff0c;还是利用零碎的时间持续学习&#xff0c;在数据结构上下点功夫都是值得的。那么Python 中有哪些数据结构呢&#xff1f;列表、字典、集…...

“必抓!”算法

一个程序员一生中可能会邂逅各种各样的算法&#xff0c;但总有那么几种&#xff0c;是作为一个程序员一定会遇见且大概率需要掌握的算法。今天就来聊聊这些十分重要的“必抓&#xff01;”算法吧~ 你可以从以下几个方面进行创作&#xff08;仅供参考&#xff09; 一&#xff…...

【监控系统】Promethus整合Alertmanager监控告警邮件通知

【监控系统】Promethus整合Alertmanager监控告警邮件通知 Alertmanager是一种开源软件&#xff0c;用于管理和报警监视警报。它与Prometheus紧密集成&#xff0c;后者是一种流行的开源监视和警报系统。Alertmanager从多个源接收警报和通知&#xff0c;并根据一组配置规则来决定…...

【韩顺平】Linux基础

目录 1.网络连接三种方式 1.1 桥接模式&#xff1a;虚拟系统可以和外部系统通讯&#xff0c;但是容易造成IP冲突【1-225】 1.2 NAT模式&#xff1a;网络地址转换模式。虚拟系统可以和外部系统通讯&#xff0c;不造成IP冲突。 1.3 主机模式&#xff1a;独立的系统。 2.虚拟机…...

好奇一下各个大模型对华为mate60系列的看法

目前华为Mate60系列手机已上市并获抢购&#xff0c;个人觉得很不错&#xff0c;很好奇各个AI大模型对此事的看法&#xff0c;于是对chatGPT、文心一言、讯飞星火进行了一下粗浅的测试。 题目一&#xff08;看看三个模型的综合分析能力&#xff09; “目前华为Mate60系列手机已…...

UMA 2 - Unity Multipurpose Avatar☀️五.如何使用别人的Recipe和创建自己的服饰Recipe

文章目录 🟥 使用别人的Recipe1️⃣ 导入UMA资源效果展示2️⃣ 更新Library3️⃣ 试一下吧🟧 创建自己的服饰Recipe1️⃣ 创建自己的服饰Recipe2️⃣ 选择应用到的Base Recipe3️⃣ 指定显示名 / 佩戴位置 / 隐藏部位4️⃣ 给该服饰Recipe指定Slot / Overlay🚩 赋予Slot�…...

代码随想录训练营第五十六天| 583. 两个字符串的删除操作 、72. 编辑距离

583. 两个字符串的删除操作 题目链接/文章讲解/视频讲解&#xff1a;代码随想录 1.代码展示 //583.两个字符串的删除操作 int minDistance(string word1, string word2) {//step1 构建dp数组&#xff0c;dp[i][j]的含义是要使以i-1为结尾的word1和以j-1为结尾的word2//删除其元…...

hive解决了什么问题

hive出现的原因 Hive 出现的原因主要有以下几个&#xff1a; 传统数据仓库无法处理大规模数据&#xff1a;传统的数据仓库通常采用关系型数据库作为底层存储&#xff0c;这种数据库在处理大规模数据时效率较低。MapReduce 难以使用&#xff1a;MapReduce 是一种分布式计算框架…...

Lumion 和 Enscape 应该选择怎样的笔记本电脑?

Lumion 和 Enscape实时渲染对配置要求高&#xff0c;本地配置不够&#xff0c;如何快速解决&#xff1a; 本地普通电脑可一键申请高性能工作站&#xff0c;资产安全保障&#xff0c;供软件中心&#xff0c;各种软件插件一键获取&#xff0c;且即开即用&#xff0c;使用灵活&am…...

ICCV 2023 | MoCoDAD:一种基于人体骨架的运动条件扩散模型,实现高效视频异常检测

论文链接&#xff1a; https://arxiv.org/abs/2307.07205 视频异常检测&#xff08;Video Anomaly Detection&#xff0c;VAD&#xff09;扩展自经典的异常检测任务&#xff0c;由于异常情况样本非常少见&#xff0c;因此经典的异常检测通常被定义为一类分类问题&#xff08;On…...

Mac电脑怎么使用NTFS磁盘管理器 NTFS磁盘详细使用教程

Mac是可以识别NTFS硬盘的&#xff0c;但是macOS系统虽然能够正确识别NTFS硬盘&#xff0c;但只支持读取&#xff0c;不支持写入。换句话说&#xff0c;Mac不支持对NTFS硬盘进行编辑、创建、删除等写入操作&#xff0c;比如将Mac里的文件拖入NTFS硬盘&#xff0c;在NTFS硬盘里新…...

写网站建设需求/贵州seo技术培训

http://poj.org/problem?id1190 又有好久没做搜索的题了&#xff0c;没想到做一个卡了我那么久&#xff0c;想哭啊。 一个中文题&#xff0c;思路呢也就是搜索呗&#xff0c;一层一层往上面搜&#xff0c;不过这里有两个比较重要的地方的剪枝。 一、每一次搜索可以达到的最小的…...

用dw做音乐网站模板/推广引流平台app大全

当互联网进入中国&#xff0c;随之而来的web1.0概念便在中国遍地开花&#xff0c;生根发芽。在04年左右web2.0这个概念初次进入我们的圈子里面。到如今在整个网站行业中的应用也已经比较普遍。今天&#xff0c;我将会对这两个概念来深度分析&#xff0c;寻找我们网站运营的方向…...

吉林省做网站公司/域名注册服务商

环境 RedHat Linux 6.1 MySQL 5.1.7 问题 RedHat Linux 6.1 安装 MySQL 安装前准备 1. 下载资源&#xff1a; MySQL-server-5.1.7-0.i386.rpm&#xff0c;点此下载。 MySQL-client-5.1.7-0.i386.rpm&#xff0c;点此下载。 2. 登录系统检查是否已经安装了 MySQL 3. 将两个安装文…...

烟台网站建设外贸/java培训班学费一般多少

在该示例中&#xff0c;可选地使用LSA(使用SVD)来执行维度缩减。在为什么这个有用&#xff1f;已经可以在TF-IDF矢量器中使用“max_features”参数控制尺寸(特征)的数量。在我知道LSA(和LDA)也是主题建模技术。与聚类的区别在于&#xff0c;文档属于多个主题&#xff0c;但只属…...

英文外贸网站设计/aso100官网

IP电话网络设计 * 为IP电话组件&#xff08;如cisco IP电话、cisco CallManager、Cisco IP Softphone客户端、IP网关等&#xff09;实现Qos分类、标记和拥塞管理。Qos要将VoIP通信流设置为高优先级&#xff0c;并优先传输高优先级队列中的通信流。 *将VoIP通信流放在一个独立的…...

php动态网站怎么做的/免费seo关键词优化方案

9月12日-9月14日&#xff0c;2016中国(北京)国际大数据产业博览会暨高峰论坛&#xff0c;在北京中国国际展览中心举行。本届展会以"促进大数据时代变革、共赢新时代机遇和挑战"为主题&#xff0c;展示了大数据产业领域的最新成果、新技术&#xff0c;吸引了众多业内人…...