C# 使用C将多个工作簿合并到一个(新)主工作簿中#

C# 使用C将多个工作簿合并到一个(新)主工作簿中#,c#,excel,c#-4.0,c#-3.0,C#,Excel,C# 4.0,C# 3.0,我需要一些关于将多个工作簿集成到单个主工作簿的帮助。我正在尝试使用以下代码。如果有人能帮我解决以下问题,我将不胜感激: 保存包含所有工作表的最终(主)工作簿 复制到主工作簿时,不同工作簿中的工作表不应格式松散 代码: 使用系统; 使用System.Collections.Generic; 使用System.Linq; 使用系统文本; 使用Excel=Microsoft.Office.Interop.Excel; 使用Microsoft.Office.Interop.Excel; 使用System

我需要一些关于将多个工作簿集成到单个主工作簿的帮助。我正在尝试使用以下代码。如果有人能帮我解决以下问题,我将不胜感激:

  • 保存包含所有工作表的最终(主)工作簿
  • 复制到主工作簿时,不同工作簿中的工作表不应格式松散
  • 代码:

    使用系统;
    使用System.Collections.Generic;
    使用System.Linq;
    使用系统文本;
    使用Excel=Microsoft.Office.Interop.Excel;
    使用Microsoft.Office.Interop.Excel;
    使用System.IO;
    命名空间集成宏
    {
    班级计划
    {
    静态void Main(字符串[]参数)
    {
    Excel.Application app=新建Excel.Application();
    app.Visible=true;
    应用程序工作簿。添加(“”);
    app.Workbooks.Add(@“C:\Users\ssehgal\Documents\Excel Files For Macro\WorkBook1.xls”);
    app.Workbooks.Add(@“C:\Users\ssehgal\Documents\Excel Files For Macro\WorkBook2.xls”);
    对于(inti=2;i
    var-app=new-Application(){Visible=true};
    var master=app.Workbooks.Add();
    //对需要合并的每个工作簿重复此操作。。。
    应用程序。工作簿。添加(\u路径\u到\u工作簿\u)
    .Worksheets.Cast()
    .ToList()//Move()将修改枚举的源,因此需要创建临时副本
    .ForEach(x=>x.Move(主表[1]);
    
    非常感谢..代码有效..但是,我无法保存标题颜色的格式。是否也可以保存标题颜色?我无法复制。在Excel2010上,列标题和页面标题都复制得很好。您能提供一个示例文件来重现此问题吗?
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Excel = Microsoft.Office.Interop.Excel;
    using Microsoft.Office.Interop.Excel;
    using System.IO;
    
    namespace IntegrationMacro
    {
        class Program
        {
            static void Main(string[] args)
            {
                Excel.Application app = new Excel.Application();
                app.Visible = true;
                app.Workbooks.Add("");
                app.Workbooks.Add(@"C:\Users\ssehgal\Documents\Excel-Files-For-Macro\WorkBook1.xls");
                app.Workbooks.Add(@"C:\Users\ssehgal\Documents\Excel-Files-For-Macro\WorkBook2.xls");
                for (int i = 2; i <= app.Workbooks.Count; i++)
                {
                    for (int j = 1; j <= app.Workbooks[i].Worksheets.Count; j++)
                    {
                        Excel.Worksheet ws = (Excel.Worksheet)app.Workbooks[i].Worksheets[j];
                        ws.Copy(app.Workbooks[1].Worksheets[1]);                    
                    }
                }
    
            }
    
        }
    }
    
    var app = new Application() { Visible = true };
    var master = app.Workbooks.Add();
    
    // repeat this for each workbook you need to combine...
    app.Workbooks.Add(__PATH_TO_THE_WORKBOOK__)
        .Worksheets.Cast<Worksheet>()
        .ToList() // Move() will modify the source of enumeration, so we need to make a temp copy
        .ForEach(x => x.Move(master.Sheets[1]));