【C#操作Excel】同名Excel放入同一文件夹中,然后合并为同一个Excel文件
近期有对Excel操作的需求,由于都是重复劳动,故分享代码如下,本人也是技术菜鸟没有考虑性能,如果有大牛能够指教就再好不过了
事先电脑中需要安装Excel,然后Vs中引用Microsoft.Office.Interop.Excel;
使用下方代码前请加上using Excel = Microsoft.Office.Interop.Excel;
同名Excel放入同一文件夹中
前提:同种类型Excel文件名的格式都是:A(1)、A(2)这种。
利用正则表达式来分组,代码如下:
- 1 /// <summary>
- 2 /// 将同名Excel分组
- 3 /// </summary>
- 4 void MoveFile()
- 5 {
- 6 //改为你自己的路径
- 7 string path = @"C:\Users\Reasonable\Desktop\table";
- 8 DirectoryInfo root = new DirectoryInfo(path);
- 9 FileInfo[] files = root.GetFiles();
- 10
- 11 Regex fileRegex = new Regex(@".+(?=\()");
- 12
- 13 foreach (var file in files)
- 14 {
- 15 var fileName = fileRegex.Match(file.Name).ToString();
- 16
- 17 var targetPath = $@"{path}\{fileName}";
- 18
- 19 //以文件名创建子目录
- 20 if (!Directory.Exists(targetPath))
- 21 {
- 22 Directory.CreateDirectory(targetPath);
- 23 }
- 24
- 25 file.MoveTo(Path.Combine(targetPath, file.Name));
- 26 }
- 27
- 28 Console.Read();
- 29 }
- 30 }
同一文件夹内Excel合并为同一个
前提:由于事先执行了上方分组代码,所以根目录下是没有文件的,如果有需求请自行修改。
最初我是用Excel的宏操作的,但是需要一个个运行,太繁琐,于是还是改为使用C#自动跑。
- 1 /// <summary>
- 2 /// 多个excel合并
- 3 /// </summary>
- 4 void MergeExcel()
- 5 {
- 6 //改为你自己的路径
- 7 string path = @"C:\Users\Reasonable\Desktop\table";
- 8 DirectoryInfo root = new DirectoryInfo(path);
- 9 //获取所有子目录
- 10 var dires = root.GetDirectories();
- 11 foreach (var dir in dires)
- 12 {
- 13 Excel.Application app = new Excel.Application();
- 14 Excel._Workbook result = app.Workbooks.Add();
- 15 //获取子目录的文件
- 16 FileInfo[] files = dir.GetFiles();
- 17
- 18 foreach (var file in files)
- 19 {
- 20 Excel._Workbook wb1 = app.Workbooks.Open(Path.GetFullPath(file.FullName));
- 21 foreach (Excel._Worksheet each in wb1.Sheets)
- 22 {
- 23 each.Copy(result.Worksheets[1]);
- 24 }
- 25 wb1.Close();
- 26 }
- 27 result.SaveAs($@"{dir.FullName}\new.xlsx");
- 28 app.Quit();
- 29 }
- 30 }
【C#操作Excel】同名Excel放入同一文件夹中,然后合并为同一个Excel文件的更多相关文章
- [R语言]读取文件夹下所有子文件夹中的excel文件,并根据分类合并。
解决的问题:需要读取某个大文件夹下所有子文件夹中的excel文件,并汇总,汇总文件中需要包含的2部分的信息:1.该条数据来源于哪个子文件夹:2.该条数据来源于哪个excel文件.最终,按照子文件夹单独 ...
- 键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如:"java","txt")作为key, 用个数作为value,放入到map集合中,遍历map集合
package cn.it.zuoye5; import java.io.File;import java.util.HashMap;import java.util.Iterator;import ...
- 【集中工作薄】 当前文件夹中所有Excel文件中 多个工作簿的第一个工作表 复制到工作簿中
功能:当前文件夹中所有Excel文件中 多个工作簿的第一个工作表 复制到工作簿中 Sub Books2Sheets() '定义对话框变量 Dim fd As FileDialog Set fd = A ...
- 有些其他程序设置为从 Outlook 下载并删除邮件。为防止发生此意外情况,我们将这些邮件放入一个特殊的 POP 文件夹中
最近使用FOXMAIL接收MSN邮件时,发现有一些邮件收取不到,进到WEB页面,页面下方提示“你的邮件位于 POP 文件夹中!有些其他程序设置为从 Outlook 下载并删除邮件.为防止发生此意外情况 ...
- python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件
python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 python操作txt文件中 ...
- 在存放源程序的文件夹中建立一个子文件夹 myPackage。例如,在“D:\java”文件夹之中创建一个与包同名的子文件夹 myPackage(D:\java\myPackage)。在 myPackage 包中创建一个YMD类,该类具有计算今年的年份、可以输出一个带有年月日的字符串的功能。设计程序SY31.java,给定某人姓名和出生日期,计算该人年龄,并输出该人姓名、年龄、出生日期。程序使用YM
题目补充: 在存放源程序的文件夹中建立一个子文件夹 myPackage.例如,在“D:\java”文件夹之中创建一个与包同名的子文件夹 myPackage(D:\java\myPackage).在 m ...
- 从加载DLL的中获取放置于Resources文件夹中资源字典的几种方法
原文:从加载DLL的中获取放置于Resources文件夹中资源字典的几种方法 主程序 为 Main_Test.exe 被加载的DLL 为 Load_Test.dll 此DLL 中 有一个 文件夹Re ...
- winfrom保存图片,将文件夹中图片放入listview,与撤回操作
之前那些操作完成对图片的修改之后,就是要保存图片了. 这里保存用到一个SaveFileDialog控件,可以获取用户选择的保存文件的路径. ) { SaveFileDialog saveImageDi ...
- 自定义的类型放入STL的set中,需要重载自定义类中的“<”符号(转)
在以前学习STL的时候,曾经学到过,如果要将自定义的类型放入到set中的话,就需要重载“<”符号,原因是set是一个有序的集合,集合会按照“<”比较的大小,默认按照从小到大的顺序排列.假设 ...
随机推荐
- deque概述
1.简介 双端队列deque,与vector的最大差异在于: 一.deque运行常数时间对头端或尾端进行元素的插入和删除操作. 二.deque没有所谓的容器概念,因为它是动态地以分段连续空间组合而成随 ...
- AT2657 [ARC078D] Mole and Abandoned Mine
简要题解如下: 记 \(1\) 到 \(n\) 的路径为关键路径. 注意到关键路径只有一条是解题的关键,可以思考这张图长什么样子. 不难发现关键路径上所有边均为桥,因此大致上是关键路径上每个点下面挂了 ...
- JVM学习六:堆分析
一.内存溢出(OOM)的原因 在JVM中,有哪些内存区间? 堆溢出 public static void main(String args[]){ ArrayList<byte[]> li ...
- 开源项目(asyncHttpClient) get post 方式提交
get方式: 1 public static void requestNetForGetLogin(final Context context,final Handler handler ,final ...
- drop、delete和truncate三者的区别
相同点:1.truncate和不带where子句的delete.以及drop都会删除表内的数据.2.drop.truncate都是DDL语句(数据定义语言),执行后会自动提交.不同点:1. trunc ...
- kebernet--新手填坑
1.安装好kubernet之后,新建rc后,里面的容器一直ImagePullBackOff ,镜像无法拉取: ----需要配置docker镜像为国内镜像,记得在各个Node上都要配置!!! vim / ...
- 群聊(udp)
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...
- 微信小程序开发提升效率
http://www.ifanr.com/minapp/790017 微信小程序的 API 实现需要兼顾方方面面,所以仍然使用 callback 写法. 众所周知,Callback-Hell(回调地狱 ...
- 计算机的网络参考模型与5G协议
计算机的网络参考模型与5G协议 1 分层思想 2 OSI参考模型 3 TCP/IP 协议族的组成 4 数据的封装与解封 5 层间通讯过程 6 空口协议 1.喝可乐的人不一定知道其生产的过 ...
- IT职业技能图谱:架构师、H5、DBA、移动、大数据、运维...
转载 作者:StuQ 文章收藏自微信:InfoQ 时隔近5个月,StuQ的小伙伴们再次出品了IT职业技能图谱更新版.这回除更新之前版本外,还添加了架构师.HTML 5.DBA等新的职业技能图谱.正 ...