2012-08-15 2 views
0

나는 100 개의 엑셀 파일을 가지고 있습니다. 각 파일에서 SQL 서버에 삽입 할 행이 하나 필요합니다. 이 자동 필요하지만 궁극적으로 응용 프로그램에서 asp.net 또는 매크로를 Excel 경우 상관 없어. 아이디어가 있으시면 알려주세요.asp.net 4.0은 명령 행 응용 프로그램에서 2010 년을 능가하지 못합니다. 드라이버를 설치 한 후에도 드라이버를 찾을 수 없습니다.

문제 나는 다음 asp.net 4.0 명령 줄 응용 프로그램 코드를 작성 오류를 가지고 다음 'Microsoft.Ace.OleDb.4.0'공급자는 로컬 컴퓨터에 등록되어 있지 않습니다.

시도

나는 마이크로 소프트 액세스 데이터베이스 엔진 2010 재배포, ( http://www.microsoft.com/en-us/download/details.aspx?id=13255) 내 상자에 대한 자세한 ODBC 드라이버는 더있다을 설치 한 후. 이전과 마찬가지로 SQL 드라이버.

내 상자는 x64이지만 x86 용 Microsoft Access 데이터베이스 엔진 2010 재배포 가능 파일을 설치하기 위해 x86 사무실이 설치되어 있습니다.

또한 레지스트리를 확인했으며 SQL 서버 드라이버가 아닌 드라이버는 볼 수 없습니다.

내가 읽은 몇 가지 기사 : 나는 드라이버가 될 때까지

http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/eeaa2d7b-fbfa-401b-8efe-9170f04059b0

The 'Microsoft.ACE.OLEDB.12.0' provider is not registered in the local machine

내가 아래에있는 내 코드를 포함거야 동안, 나는 그것이 차이를 만드는 생각하지 않는다 -

public void ImportExcelFilesForPieChart() 
{ 
    List<DataTable> listDataTables = new List<DataTable>(); 
    List<CompanyInfo> newlist = new List<CompanyInfo>(); 
    string sheetName = "Output"; 

    string[] fileList = Directory.GetFiles(dropBoxExcelLocation); 
    foreach (string filename in fileList) 
    { 
     DataTable dt = new DataTable(); 
     string connectionString = string.Format("Provider=Microsoft.Ace.OleDb.4.0;data source={0};Extended Properties=Excel 8.0;HDR=No;IMEX=1", dropBoxExcelLocation + filename); 
     using (OleDbConnection connection = new OleDbConnection(connectionString)) 
     { 
      string strSQL = String.Format("SELECT 4A, 4B, 4C, 4D, 4E, 4F FROM [{0}$]", sheetName); //[A4:F4]"; 
      OleDbCommand objCmd = new OleDbCommand(strSQL, connection); 
      connection.Open(); 

      using (OleDbDataAdapter da = new OleDbDataAdapter(strSQL, connection)) 
      { 
       da.Fill(dt); 
       listDataTables.Add(dt); 
      } 
     } 
    } 
} 
+0

IIS가 상자의 x64에서 실행 중입니까? –

+0

IIS에서 실행 중이 아니며 콘솔 앱으로 실행 중입니다. – DFBerry

답변

0

몇 가지 작업을 수행 했으므로 모든 단계가 중요한지 잘 모르겠습니다.

이 KB 기사에 따라 내 dll을 등록했습니다. http://support.microsoft.com/kb/209805. 등록하기 전에 레지스트리에 항목이 없는지 확인했습니다. 이것은 ISAM 발견되지 않은 예외에 날 잡았어.

그렇다면 Dave R 덕분에 연결 문자열을 변경했습니다. 나는 (.XLSX) 파일 확장자를 인식하지 않았다

string connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;data source={0};Extended Properties=\"Excel 12.0 Xml;IMEX=1\"", filename); 

있었다 일 최종 연결 문자열 (확장 속성에 탈출 따옴표를주의) 연결 문자열에 있지만 여기에 연결 문자열 정보를 읽은 후 relavant했다 (http://www.connectionstrings.com/excel-2007) 나는 고쳤다.

+0

다행 이군. 연결 문자열 사이트도 매우 유용합니다. 바로 북마크 해 드리겠습니다. –

+0

도와 주셔서 감사합니다. 나는 너무 붙어 있었다. 나에게는 커다란 도움이되었습니다. – DFBerry

1

연결 문자열이 잘못되었습니다.

공급자는

Microsoft.ACE.OLEDB.12.0 내가 JET 공급자가 4.0이라고 생각해야한다. 미리 해봤습니까?

+0

연결 문자열이 변경되었으므로 "설치 가능한 ISAM을 찾지 못했습니다."라는 오류 메시지가 나타납니다. 이 KB를 지금 따르고 있습니다 - http://support.microsoft.com/kb/209805. – DFBerry