2011-03-15 5 views
2

Excel 파일에서 워크 시트를 읽은 다음 중요한 내용을 선택하고 모든 데이터를 데이터베이스에 저장하는 방법이 필요합니다.C#의 Excel 워크 시트에서 데이터 읽기?

한 번만 작업합니다. 그것은 정보를 가진 오래된 엑셀 파일로, 데이터베이스에 전달되어야하며, 내가 개발 한 응용 프로그램에서 작동합니다.

나는 많은 예제를 보았지만 어떻게 작동하는지 잘 이해하지 못하고 있으며, 어떤 방식으로 이런 유형의 작업을 수행하는 것이 가장 좋습니다.

제 아이디어는이 과정에서 C#으로 일부 응용 프로그램을 개발하는 것입니다.

+5

정확히 일치하는 http://stackoverflow.com/questions/4235887/c-read-excel-worksheet –

답변

1

LINQ 작동 할 수 비교적 간단한 테이블을 위해 바람직 할 것이다. 전통적인 방식은 COM Interop을 사용하는 것입니다. 다음은 Excel에서 COM의 상호 운용성을 사용하여 작업에 대한 마이크로 소프트의 페이지입니다 (이것은 스프레드 시트 작성을 위해,하지만 원칙은 동일합니다 - 그냥 열고 데이터를 읽을 다른 API 방법을 사용) :

http://msdn.microsoft.com/en-us/library/ms173186(v=vs.80).aspx

1

linq 공급자를 사용하여 Excel에 연결하는 것이 좋습니다. 이렇게하면 찾고있는 정보를 쉽게 쿼리 할 수 ​​있습니다. 일단 데이터베이스에 삽입하면 쉽게 사용할 수 있습니다.

http://code.google.com/p/linqtoexcel/

2

내가했습니다 전에 이것을 사용했고 잘 작동합니다. http://exceldatareader.codeplex.com/

는 C#에서 Excel 워크 시트에서 편리하게 예 ...

using (FileStream fileStream = File.Open(inputFilenames[0], FileMode.Open, FileAccess.Read)) 
{ 
    IExcelDataReader excelReader; 
    if (Path.GetExtension(inputFilenames[0]) == ".xls") 
     excelReader = Factory.CreateReader(fileStream, ExcelFileType.Binary); 
    else 
     excelReader = Factory.CreateReader(fileStream, ExcelFileType.OpenXml); 

    excelReader.NextResult(); 
    while (excelReader.Name != this.Worksheet) 
     excelReader.NextResult();     

    while (excelReader.Read()) 
    { 
     if (FirstRowHasColumnNames) 
     { 
      FirstRowHasColumnNames = false; 
     } 
     else 
     { 
      //do stuff 
      var test = GetColumnData(excelReader, 1); 
     } 
    } 

    this.Save(outputFilename); 
} 
관련 문제