【问题标题】:Merge multiple workbooks in one (new) master workbook using C#使用 C# 将多个工作簿合并到一个(新)主工作簿中
【发布时间】:2015-06-30 21:05:52
【问题描述】:

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

  1. 保存包含所有工作表的最终(主)工作簿
  2. 不同工作簿中的工作表在复制到主工作簿时不应松散格式。

代码:

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]);                    
                }
            }

        }

    }
}

【问题讨论】:

    标签: c# excel c#-4.0 c#-3.0


    【解决方案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]));
    

    【讨论】:

    • 非常感谢.. 代码有效.. 但是,我无法保存标题的格式,如颜色。有什么方法可以保存标题颜色吗?
    • 我无法重现。在 Excel2010 上,列标题和页眉都为我复制得很好。您能否提供一个示例文件来重现该问题?
    猜你喜欢
    • 2021-01-24
    • 1970-01-01
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多