zoukankan      html  css  js  c++  java
  • 【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:UsersReasonableDesktop	able";
     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:UsersReasonableDesktop	able";
     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}
    ew.xlsx");
    28                 app.Quit();
    29             }
    30         }
    View Code
  • 相关阅读:
    P4556 [Vani有约会]雨天的尾巴(线段树合并)
    bzoj3590: [Snoi2013]Quare
    P3187 [HNOI2007]最小矩形覆盖
    对文件中的名字进行随机抽选(小脚本)
    用shell编写一个三角形图案
    HUE安装与使用
    史上最全CentOS6离线安装部署Cloudera Manager5.9.3
    ReLU 函数
    关于反向传播
    关于微分
  • 原文地址:https://www.cnblogs.com/gdvxfgv/p/10954085.html
Copyright © 2011-2022 走看看