2013-05-13 2 views
5

C# Windows 응용 프로그램에서 나는 많은 Excel 통합 문서를 가지고 있는데, 원하는 것은 Excel 통합 문서의 워크 시트를 단일 통합 문서로 복사하는 것입니다. 이 작업은 가능하지만 Excel 통합 문서를 열어야합니다.Excel 워크 시트를 복사하는 방법 C# winforms에서 Excel 파일을 열지 않고 다른 Excel 통합 문서에?

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

엑셀 시트를 열지 않고도 모든 데이터를 스타일로 복사 할 수 있습니까?

+0

Excel 파일을 열지 않고 통합 문서에서 단일 시트를 복사 할 수 없습니다. 그러나 복사 작업을 백그라운드에서 실행하려면 별도의 Excel 응용 프로그램에서 복사 작업을 수행하면됩니다. 한 번은 시작 매크로가 포함 된 템플릿 시트를 복사해야했습니다. 매크로가 해제 된 별도의 (보이지 않는) Excel 응용 프로그램에서이 템플릿을 열어야했습니다. – StuartRedmann

답변

6

워크 시트 자체의 내용을 선택하거나 복사하지 않고 워크 시트와 모든 내용 및 서식을 복사하려면 Worksheet.Copy을 사용할 수 있습니다. 당신은 너무처럼 사용하십시오 : 경우

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

그러나, 당신이 실제로 귀하의 질문에 무엇을 의미하는 다음, 당신이 이제까지 파일을 열지 않고도 하나의 공통 통합 문서에 통합 문서의 내용을 복사하려는 I 돈이다 그럴 수 있다고 생각하지 않습니다. 데이터에 액세스하려면 파일을 열어야합니다.

+0

질문에 대한 답변이 아닙니다 !! –

+0

게시물의 제목뿐만 아니라 실제 질문을 인용하십시오 : "엑셀 시트를 열지 않고도 가능한가요? 모든 데이터를 스타일로 복사합니까?" 그러면 시트가 열리지 않고 모든 데이터가 복사됩니다. 시트를 복사합니다. – Adrian

+0

닫힌 통합 문서를 실행할 수 있습니까 ?? 나는 잘 모르겠다. 너 시험 해봤 니? –

관련 문제