当前位置: 首页 > 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("合并完成");
        }

http://www.lryc.cn/news/162105.html

相关文章:

  • 【送书活动】揭秘分布式文件系统大规模元数据管理机制——以Alluxio文件系统为例
  • 微信小程序——数据绑定
  • libbpf-bootstrap安卓aarch64适配交叉编译
  • 【剑指Offer】24.反转链表
  • 04-docker compose容器编排
  • 通过位运算打多个标记
  • [学习笔记]Node2Vec图神经网络论文精读
  • C# Linq源码分析之Take(五)
  • 性能监控-grafana+prometheus+node_exporter
  • (STM32H5系列)STM32H573RIT6、STM32H573RIV6、STM32H573ZIT6嵌入式微控制器基于Cortex®-M33内核
  • mysql配置bind-address不生效
  • Linux相关指令(下)
  • Codeforces Round 855 (Div 3)(A - F)
  • Friend.tech(FT):社交媒体金融的未来,真的如此美好吗?
  • yolov7中Concat之后加注意力模块(最复杂的情况)
  • 解除百度安全验证
  • Codeforces Round 731 (Div 3)(A - F)
  • Python的sort()与sorted()函数详解
  • 用python实现基本数据结构【04/4】
  • “必抓!”算法
  • 【监控系统】Promethus整合Alertmanager监控告警邮件通知
  • 【韩顺平】Linux基础
  • 好奇一下各个大模型对华为mate60系列的看法
  • UMA 2 - Unity Multipurpose Avatar☀️五.如何使用别人的Recipe和创建自己的服饰Recipe
  • 代码随想录训练营第五十六天| 583. 两个字符串的删除操作 、72. 编辑距离
  • hive解决了什么问题
  • Lumion 和 Enscape 应该选择怎样的笔记本电脑?
  • ICCV 2023 | MoCoDAD:一种基于人体骨架的运动条件扩散模型,实现高效视频异常检测
  • Mac电脑怎么使用NTFS磁盘管理器 NTFS磁盘详细使用教程
  • Java设计模式-结构性设计模式(代理设计模式)