2010-01-19 2 views
2

Excel 파일에서 셀의 값을 찾고 싶다고 가정 해 보겠습니다. VBA에서, 나는 이런 짓을 했을까 :Excel 파일을 조작 할 수 있도록 Visual Studio를 설정하려면 어떻게해야합니까?

Dim varValue As Variant 
Dim wb As Workbook 
Dim ws As Worksheet 
Set wb = ThisWorkbook 
Set ws = wb.Worksheets("Sheet1") 
varValue = ws.Range("A1").Value 

가 어떻게 내가 액세스 및 C#보다는 VBA에서 Excel 파일을 수정할 수있는 비주얼 스튜디오 프로젝트를 설정합니까?

어떤 참조를 추가해야합니까?

파일을 사용하려면 파일을 열어야합니까?

답변

3

나는 C#을 통해 Excel 스프레드 시트에서 데이터를 추출하는 아주 간단한 클래스를 작성했습니다. 당신은 포함해야합니다 :

using Microsoft.Office.Interop; 

그런 다음 당신이 시작하는 같은 것을 할 수 없습니다을

Excel.Application excel; 
Excel.Workbook workbook; 
Excel.Worksheet worksheet; 
Excel.Sheets sheets; 
Excel.Range range; 

excel = new Microsoft.Office.Interop.Excel.Application(); 
workbook = excel.Workbooks.Open(workbookName, 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 = workbook.Worksheets; 
... 
+1

COM 탭에서 Microsoft Excel Object Library를 참조 할 수도 있습니다. –

3

Excel 자동화 또는 타사 라이브러리를 사용할 수 있습니다.

Excel 자동화를 사용하려면 Office PIA를 설치하고 Microsoft.Office.Interop.Excel.dll에 대한 참조를 추가해야합니다. 그런 다음 코드를 작성하여 (ApplicationClass 클래스를 사용하여) 파일을 열고 조작하십시오.

이 접근 방식은 VBA에서 익숙한 것과 동일한 개체 모델을 사용합니다. 그러나 C# 3에서는 선택적 매개 변수 나 약한 타이핑을 지원하지 않으므로 다소 짜증이납니다.


엑셀 자동화가 아닌 대화 형 컨텍스트에서 실행 코드에 적합하지 않은 VB 닷넷 또는 (현재 베타) C# 4에 그것을하는 것이 더 쉽습니다. .NET 파일로 작성된 Excel 파일을 읽고 쓸 수있는 여러 타사 라이브러리가 있습니다.

또한 테이블 형식의 데이터 만 조작해야하는 경우 OleDb를 사용하여 this connection string을 사용하여 Excel 파일에 대해 SQL 문을 실행할 수 있습니다.

을 사용하면 SELECT * FROM [SheetName]을 실행할 수 있습니다 (시트가 테이블이라고 가정). 명명 된 범위에서 선택할 수도 있습니다. oleDbConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null)을 호출하고 반환 된 DataTable의 TABLE_NAME 열을보고 사용 가능한 테이블을 가져올 수 있습니다.

1

Microsoft.Office.Interop.Excel을 사용해야합니다. COM Interop을 사용해야합니다. Here's 어떻게 완료했는지에 대한 자세한 자습서.

2

당신은 상호 운용성 사용해야합니다. 당신은 단지에 대한 참조를 필요

... 당신이 다른 데이터 소스 것처럼

System.Data.OleDb 

연결 문자열을 정의

string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=YourPath;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"; 

그리고이 데이터베이스를 쿼리하는 몇 가지 코드를 추가

OleDbConnection objConnection = new OleDbConnection(); 
string strSQL = "SELECT * FROM [YourTable]"; 
objConnection = new OleDbConnection(connectionString); 
objConnection.Open(); 
OleDbCommand cmd = new OleDbCommand(strSQL, objConnection); 
DataTable dt = new DataTable(); 
OleDbDataAdapter da = new OleDbDataAdapter(cmd); 
da.Fill(dt); 

... 그런 다음 데이터 행을 통해 열거하십시오.

+0

스프레드 시트에 표와 같은 구조가 있고 서식을 지정하지 않는 경우에만 유용합니다. 내 대답을 보라. – SLaks

+0

아 - 지적. 감사! 다른 사람이 그 자격을 충족시키는 경우를 대비하여 답변을 여전히 참고할 것입니다. –

관련 문제