Come unire due file excel in uno con i loro nomi di foglio?

Per la fusione di due foglio di excel, sto usando sotto il codice.

using System;
using Excel = Microsoft.Office.Interop.Excel;
using System.Reflection; 

namespace MergeWorkBooks
{
    class Program
    {
        static void Main(string[] args)
        {
            Excel.Application app = new Excel.Application();

            app.Visible = true;
            app.Workbooks.Add("");
            app.Workbooks.Add(@"c:\MyWork\WorkBook1.xls");
            app.Workbooks.Add(@"c:\MyWork\WorkBook2.xls");


            for (int i = 2; i <= app.Workbooks.Count; i++)
            {
                int count = app.Workbooks[i].Worksheets.Count;

                app.Workbooks[i].Activate();
                for (int j=1; j <= count; j++)
                {
                    Excel._Worksheet ws = (Excel._Worksheet)app.Workbooks[i].Worksheets[j];
                    ws.Select(Type.Missing);
                    ws.Cells.Select();

                    Excel.Range sel = (Excel.Range)app.Selection;
                    sel.Copy(Type.Missing);

                    Excel._Worksheet sheet = (Excel._Worksheet)app.Workbooks[1].Worksheets.Add(
                    Type.Missing, Type.Missing, Type.Missing, Type.Missing
                    );

                    sheet.Paste(Type.Missing, Type.Missing);

                }
            }
        }
    }
}

Questo codice funziona bene per me, per unione di cartella di lavoro di excel. Ma, al momento della fusione non ricevo il foglio di excel con i nomi. Qui ho bisogno che quando excel è l’unione, allo stesso tempo, i nomi di foglio dovrebbe anche andare per l’unito foglio di excel.

OriginaleL’autore Tripati Subudhi | 2011-09-27

2 Replies
  1. 3

    Seguenti funzionato bene per me, tra cui la copia il nome e dove il nome colpiti è gentilmente anche gestito la Foglio1(2) etc.

    Excel.Application app = new Excel.Application();
    app.Visible = true;
    app.Workbooks.Add("");
    app.Workbooks.Add(@"c:\MyWork\WorkBook1.xls");
      app.Workbooks.Add(@"c:\MyWork\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 = app.Workbooks[i].Worksheets[j];
            ws.Copy(app.Workbooks[1].Worksheets[1]);
        }
    }
    Quando vado a correre questo poi io sono sempre al di sotto di errore. Messaggio di Errore del compilatore: CS0266: Impossibile convertire implicitamente il tipo di ‘oggetto’ di ‘Microsoft.Office.Di interoperabilità.Excel.Foglio di lavoro’. Una conversione esplicita esiste (manca una parte del cast?) Si può anche dire “No sovraccarico per il metodo di ‘Copiare’ prende ‘1’ argomenti”
    Beh, oltre che il nome delle 2 cartelle di lavoro di unione, che era tutta la mia app. Im indovinando hanno cambiato in Office2010 poi.
    Grazie, ora funziona benissimo per me…

    OriginaleL’autore BugFinder

  2. 0

    Privo di errori e Migliorare la Risposta

    creare result2.xlsx file stesso percorso e trovi finale foglio di excel come si desidera

     class Program
         {        
          static void Main(string[] args)
            {
            Application app = new Application();
            app.Visible = true;
            Workbook w1 = app.Workbooks.Add(@"D:\MyDownload\result2.xlsx");
            Workbook w2 = app.Workbooks.Add(@"D:\MyDownload\merge1.xlsx");
            Workbook w3 = app.Workbooks.Add(@"D:\MyDownload\merge2.xlsx");
            for (int i = 2; i <= app.Workbooks.Count; i++)
            {
                for (int j = 1; j <= app.Workbooks[i].Worksheets.Count; j++)
                {
                    Worksheet ws = (Worksheet)app.Workbooks[i].Worksheets[j];
                    ws.Copy(app.Workbooks[1].Worksheets[1]);
                }
            }
            app.Workbooks[1].SaveCopyAs(@"D:\MyDownload\result2.xlsx");
            w1.Close(0);
            w2.Close(0);
            w3.Close(0);
            app.Quit();
        }
    }

    OriginaleL’autore Ashu

Lascia un commento