近期有对Excel操作的需求,由于都是重复劳动,故分享代码如下,本人也是技术菜鸟没有考虑性能,如果有大牛能够指教就再好不过了

事先电脑中需要安装Excel,然后Vs中引用Microsoft.Office.Interop.Excel;

使用下方代码前请加上using Excel = Microsoft.Office.Interop.Excel;

同名Excel放入同一文件夹中

前提:同种类型Excel文件名的格式都是:A(1)、A(2)这种。

利用正则表达式来分组,代码如下:

  1. 1 /// <summary>
  2. 2 /// 将同名Excel分组
  3. 3 /// </summary>
  4. 4 void MoveFile()
  5. 5 {
  6. 6 //改为你自己的路径
  7. 7 string path = @"C:\Users\Reasonable\Desktop\table";
  8. 8 DirectoryInfo root = new DirectoryInfo(path);
  9. 9 FileInfo[] files = root.GetFiles();
  10. 10
  11. 11 Regex fileRegex = new Regex(@".+(?=\()");
  12. 12
  13. 13 foreach (var file in files)
  14. 14 {
  15. 15 var fileName = fileRegex.Match(file.Name).ToString();
  16. 16
  17. 17 var targetPath = $@"{path}\{fileName}";
  18. 18
  19. 19 //以文件名创建子目录
  20. 20 if (!Directory.Exists(targetPath))
  21. 21 {
  22. 22 Directory.CreateDirectory(targetPath);
  23. 23 }
  24. 24
  25. 25 file.MoveTo(Path.Combine(targetPath, file.Name));
  26. 26 }
  27. 27
  28. 28 Console.Read();
  29. 29 }
  30. 30 }

同一文件夹内Excel合并为同一个

前提:由于事先执行了上方分组代码,所以根目录下是没有文件的,如果有需求请自行修改。

最初我是用Excel的宏操作的,但是需要一个个运行,太繁琐,于是还是改为使用C#自动跑。

  1. 1 /// <summary>
  2. 2 /// 多个excel合并
  3. 3 /// </summary>
  4. 4 void MergeExcel()
  5. 5 {
  6. 6 //改为你自己的路径
  7. 7 string path = @"C:\Users\Reasonable\Desktop\table";
  8. 8 DirectoryInfo root = new DirectoryInfo(path);
  9. 9 //获取所有子目录
  10. 10 var dires = root.GetDirectories();
  11. 11 foreach (var dir in dires)
  12. 12 {
  13. 13 Excel.Application app = new Excel.Application();
  14. 14 Excel._Workbook result = app.Workbooks.Add();
  15. 15 //获取子目录的文件
  16. 16 FileInfo[] files = dir.GetFiles();
  17. 17
  18. 18 foreach (var file in files)
  19. 19 {
  20. 20 Excel._Workbook wb1 = app.Workbooks.Open(Path.GetFullPath(file.FullName));
  21. 21 foreach (Excel._Worksheet each in wb1.Sheets)
  22. 22 {
  23. 23 each.Copy(result.Worksheets[1]);
  24. 24 }
  25. 25 wb1.Close();
  26. 26 }
  27. 27 result.SaveAs($@"{dir.FullName}\new.xlsx");
  28. 28 app.Quit();
  29. 29 }
  30. 30 }

【C#操作Excel】同名Excel放入同一文件夹中,然后合并为同一个Excel文件的更多相关文章

  1. [R语言]读取文件夹下所有子文件夹中的excel文件,并根据分类合并。

    解决的问题:需要读取某个大文件夹下所有子文件夹中的excel文件,并汇总,汇总文件中需要包含的2部分的信息:1.该条数据来源于哪个子文件夹:2.该条数据来源于哪个excel文件.最终,按照子文件夹单独 ...

  2. 键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如:"java","txt")作为key, 用个数作为value,放入到map集合中,遍历map集合

    package cn.it.zuoye5; import java.io.File;import java.util.HashMap;import java.util.Iterator;import ...

  3. 【集中工作薄】 当前文件夹中所有Excel文件中 多个工作簿的第一个工作表 复制到工作簿中

    功能:当前文件夹中所有Excel文件中 多个工作簿的第一个工作表 复制到工作簿中 Sub Books2Sheets() '定义对话框变量 Dim fd As FileDialog Set fd = A ...

  4. 有些其他程序设置为从 Outlook 下载并删除邮件。为防止发生此意外情况,我们将这些邮件放入一个特殊的 POP 文件夹中

    最近使用FOXMAIL接收MSN邮件时,发现有一些邮件收取不到,进到WEB页面,页面下方提示“你的邮件位于 POP 文件夹中!有些其他程序设置为从 Outlook 下载并删除邮件.为防止发生此意外情况 ...

  5. python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件

    python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 python操作txt文件中 ...

  6. 在存放源程序的文件夹中建立一个子文件夹 myPackage。例如,在“D:\java”文件夹之中创建一个与包同名的子文件夹 myPackage(D:\java\myPackage)。在 myPackage 包中创建一个YMD类,该类具有计算今年的年份、可以输出一个带有年月日的字符串的功能。设计程序SY31.java,给定某人姓名和出生日期,计算该人年龄,并输出该人姓名、年龄、出生日期。程序使用YM

    题目补充: 在存放源程序的文件夹中建立一个子文件夹 myPackage.例如,在“D:\java”文件夹之中创建一个与包同名的子文件夹 myPackage(D:\java\myPackage).在 m ...

  7. 从加载DLL的中获取放置于Resources文件夹中资源字典的几种方法

    原文:从加载DLL的中获取放置于Resources文件夹中资源字典的几种方法 主程序 为 Main_Test.exe 被加载的DLL 为 Load_Test.dll  此DLL 中 有一个 文件夹Re ...

  8. winfrom保存图片,将文件夹中图片放入listview,与撤回操作

    之前那些操作完成对图片的修改之后,就是要保存图片了. 这里保存用到一个SaveFileDialog控件,可以获取用户选择的保存文件的路径. ) { SaveFileDialog saveImageDi ...

  9. 自定义的类型放入STL的set中,需要重载自定义类中的“<”符号(转)

    在以前学习STL的时候,曾经学到过,如果要将自定义的类型放入到set中的话,就需要重载“<”符号,原因是set是一个有序的集合,集合会按照“<”比较的大小,默认按照从小到大的顺序排列.假设 ...

随机推荐

  1. deque概述

    1.简介 双端队列deque,与vector的最大差异在于: 一.deque运行常数时间对头端或尾端进行元素的插入和删除操作. 二.deque没有所谓的容器概念,因为它是动态地以分段连续空间组合而成随 ...

  2. AT2657 [ARC078D] Mole and Abandoned Mine

    简要题解如下: 记 \(1\) 到 \(n\) 的路径为关键路径. 注意到关键路径只有一条是解题的关键,可以思考这张图长什么样子. 不难发现关键路径上所有边均为桥,因此大致上是关键路径上每个点下面挂了 ...

  3. JVM学习六:堆分析

    一.内存溢出(OOM)的原因 在JVM中,有哪些内存区间? 堆溢出 public static void main(String args[]){ ArrayList<byte[]> li ...

  4. 开源项目(asyncHttpClient) get post 方式提交

    get方式: 1 public static void requestNetForGetLogin(final Context context,final Handler handler ,final ...

  5. drop、delete和truncate三者的区别

    相同点:1.truncate和不带where子句的delete.以及drop都会删除表内的数据.2.drop.truncate都是DDL语句(数据定义语言),执行后会自动提交.不同点:1. trunc ...

  6. kebernet--新手填坑

    1.安装好kubernet之后,新建rc后,里面的容器一直ImagePullBackOff ,镜像无法拉取: ----需要配置docker镜像为国内镜像,记得在各个Node上都要配置!!! vim / ...

  7. 群聊(udp)

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...

  8. 微信小程序开发提升效率

    http://www.ifanr.com/minapp/790017 微信小程序的 API 实现需要兼顾方方面面,所以仍然使用 callback 写法. 众所周知,Callback-Hell(回调地狱 ...

  9. 计算机的网络参考模型与5G协议

    计算机的网络参考模型与5G协议    1 分层思想 2  OSI参考模型 3  TCP/IP 协议族的组成 4  数据的封装与解封 5 层间通讯过程 6  空口协议 1.喝可乐的人不一定知道其生产的过 ...

  10. IT职业技能图谱:架构师、H5、DBA、移动、大数据、运维...

    转载 作者:StuQ 文章收藏自微信:InfoQ   时隔近5个月,StuQ的小伙伴们再次出品了IT职业技能图谱更新版.这回除更新之前版本外,还添加了架构师.HTML 5.DBA等新的职业技能图谱.正 ...