2013-05-13 42 views
5

C# windows uygulamasında, Çok sayıda excel çalışma kitabım var, ne istiyorum çalışma sayfalarını excel çalışma kitabından tek bir çalışma kitabına kopyalamak. Bu mümkün, ancak bunu yapmak için excel çalışma kitaplarını açmak zorundayım.excel çalışma sayfalarını kopyalamak nasıl excel dosyası C# winforms açmadan başka bir excel çalışma kitabına?

 Excel.Application app = new Excel.Application(); 

     app.Visible = true; 

     app.WindowState = XlWindowState.xlMinimized; 

     app.Workbooks.Add(""); 
     app.Workbooks.Add(@"Path\WorkBook1.xlsx"); 
     app.Workbooks.Add(@"Path\WorkBook2.xlsx"); 

     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(true); 
       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); 

       sheet.Name = app.Workbooks[i].Worksheets[j].Name; 
      } 


     } 

     app.DisplayAlerts = false; 
     app.Workbooks[3].Close(); 
     app.Workbooks[2].Close(); 
     app.DisplayAlerts = true; 

     Cursor = Cursors.Default; 

     MessageBox.Show("Successfully Generated Excel...!", "Excel Tool", MessageBoxButtons.OK, MessageBoxIcon.Information); 

Excel sayfalarını açmadan tüm verileri stilleriyle birlikte kopyalamak mümkün mü?

+0

Excel dosyasını açmadan bir çalışma kitabından tek sayfaları kopyalamak mümkün değildir. Ancak, yalnızca kopyalama işleminin arka planda çalışmasını istiyorsanız, bunu ayrı bir Excel uygulamasında yapabilirsiniz. Bir keresinde, başlangıç ​​makrolarını içeren bazı şablon sayfalarını kopyalamak zorunda kaldım. Bu şablonu makrolar kapalıyken ayrı (görünmez) bir Excel uygulamasında açmak zorunda kaldım. – StuartRedmann

cevap

6

Bir çalışma sayfasını ve tüm içeriğini ve biçimlendirmesini, çalışma sayfasının içeriğini seçmeden ve kopyalamaya gerek olmadan kopyalamak için Worksheet.Copy'dan yararlanabilirsiniz. Öyle gibi kullanabilirsiniz istiyorum: Eğer

Excel._Worksheet ws = (Excel._Worksheet)app.Workbooks[i].Worksheets[j]; 
Excel._Worksheet sheet = (Excel._Worksheet)app.Workbooks[1].Worksheets.Add(
       Type.Missing, Type.Missing, Type.Missing, Type.Missing 
       ); 
ws.Copy(Before: sheet); 

Ancak, gerçekte soru ile ne demek o zaman, hiç dosyayı açmadan bir ortak çalışma kitabının içine çalışma kitaplarının içeriğini kopyalamak istediğiniz ı don olduğunu Bunun mümkün olduğuna inanıyorum. Verilere erişmek için dosyayı açmanız gerekir.

+0

bu sorunun cevabı değil! –

+0

Asıl soruyu alıntılamak için, sadece yazının başlığı değil: "Excel sayfalarını açmadan mümkün mü, tüm verileri stilleriyle kopyalamak mümkün mü?" Bu, sayfayı açmaz ve tüm verileri kopyalamaz. Sayfayı kopyalar. – Adrian

+0

, kapalı çalışma kitabını çalıştırabilir misiniz? Emin değilim ... Bunu test ettin mi? –

İlgili konular