2009-04-16 5 views
5

Excel 시트 부분 (전체 시트 아님)을 C# 언어의 사용자 정의 컨트롤에 임베드해야합니다. 그리고 그 데이터를 조작하여 컬렉션에 저장하려고합니다.C# 사용자 정의 컨트롤에 Excel 시트 포함하기

가장 좋은 방법은 무엇입니까?

+0

데이터를 표 형식으로 표시하거나 실제로 Excel 렌더링 엔진이 필요합니까? Excel 파일을 읽고 DataGridView에 표시하면됩니다. 그렇지 않으면, 당신은 일부 OLE/COM 물건을해야 할 것입니다 (내가) –

+0

엑셀 시트가 필요하면 WinForm에 WebBrowser 컨트롤을 넣고 엑셀 문서로 콘텐츠 유형을로드하는 옵션이 있습니다. – jgallant

+0

2009 년부터 새로운 옵션이 생겼습니까? – PPC

답변

6

Excel COM 라이브러리를 사용하여 스프레드 시트를 엽니 다. Microsoft Excel Object Library에 대한 참조를 추가하면 Com 인터페이스로 이동할 수 있습니다.

다음 사용하여 문을 추가합니다
using Microsoft.Office.Interop; 
using Microsoft.Office.Interop.Excel; 

은 그럼 당신은 이런 식으로 뭔가를 수행하여 스프레드 시트에서 읽을 수 있습니다

private void GetData(string fileName, string tabName) 
    { 
     Workbook theWorkbook; 

     Application ExcelObj = null; 
     ExcelObj = new Application(); 

     theWorkbook = ExcelObj.Workbooks.Open(fileName, 
      Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
      Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
      Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
      Type.Missing, Type.Missing); 


     Sheets sheets = theWorkbook.Worksheets; 
     Worksheet worksheet = (Worksheet)sheets[tabName]; 

     Range range = worksheet.get_Range("A1:A1", Type.Missing); 

     string data = range.Text as string; 

     // 
     // TODO : store the data 
     // 

     theWorkbook.Close(false, fileName, null); 
    } 

이 코드는 문자열로 A1 셀의 내용을 읽을 것입니다.

Excel COM 인터페이스로 작업하는 단점 중 하나는 하나의 셀만 원할 경우에도 Range의 데이터에 액세스해야한다는 것입니다. 범위를 셀 그룹으로 설정할 수 있습니다. 그런 다음 반환되는 컬렉션을 반복하여 각 셀의 내용을 가져올 수 있습니다.

파일 이름과 탭 이름에 오류 검사/처리를 추가 할 수도 있습니다.

ODBC를 사용하여 Excel에서 읽는 방법도 있지만 스프레드 시트는 특정 방식으로 형식을 지정해야합니다. 행 1에 헤더 데이터가 있어야합니다. COM 인터페이스를 사용하는 것이 더 쉽다는 것을 알았습니다.

필요한 데이터를 얻으면 입력 된 데이터 세트에 넣을 수 있습니다. 그런 다음 WPF에서 WinForms 또는 ListBox를 사용하는 경우 해당 데이터 집합을 DataGridView에 바인딩 할 수 있습니다. 데이터를 XML 형식으로 저장하려는 경우 DataSet WriteXml 함수를 사용하여 데이터를 파일에 저장할 수 있습니다.

+0

답변에 투표하지 않은 이유를 설명하십시오. – epotter

5

변경하려는 데이터로 채워진 DataGridView을 사용하지 않는 이유는 무엇입니까?

변경이 완료되면 DataGridView에서 가져온 Excel 파일 부분에 데이터를 저장합니다.

theselinksuseful!

0

Microsoft.Office.Interop.Excel 라이브러리를 살펴보십시오. 거기에 엑셀 파일 및 작업과 함께 일할 수있는 엑셀 컨트롤이 많이 있습니다.

관련 문제