【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     }
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

 

posted @ 2019-05-31 10:54  君子酱  阅读(1326)  评论(0编辑  收藏  举报