首页 > Windows开发 > 详细

【C#操作Excel】同名Excel放入同一文件夹中,然后合并为同一个Excel文件

时间:2019-05-31 11:10:16      阅读:120      评论:0      收藏:0      [点我收藏+]

近期有对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     }
View Code

 

同一文件夹内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         }
View Code

 

【C#操作Excel】同名Excel放入同一文件夹中,然后合并为同一个Excel文件

原文:https://www.cnblogs.com/gdvxfgv/p/10954085.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!