Dev/해결 못 함

[C#/OleDbException]외부 테이블 형식이 잘못되었습니다.

엘 이스 2018. 3. 15. 16:47


xlsx 파일을 불러오려 할 때에 발생한 오류 메시지.

xls 파일은 잘 불러와진다.


string ver = 파일확장자 == "xls" ? "8.0" : "12.0 Xml;HDR=YES"; string provider = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" 

+ 파일경로 + ";Extended Properties=\"Excel " + ver + "\"";

Microsoft ACE OLEDB 12.0 Conncetion Strings 확인 : https://www.connectionstrings.com/ace-oledb-12-0/



이상한 점

1. aspx로 개발 된 다른 웹 서비스(같은 서버)에서는 xls와 xlsx를 아래와 같이 사용하여도 xlsx 파일이 잘 열린다. 

provider = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties=Excel 8.0";

2. 윈폼으로 개발 된 곳(다른 서버)에서도 아래와 같이 사용. 파일이 잘 열린다.

string ver = 파일확장자 == "xls" ? "8.0" : "12.0"; using (OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" 

+ txtFilePath.Text + ";Extended Properties='Excel " + ver + "'"))


8.0이든 12.0이든 12.0 Xml 이든 되지않았다..


xlsx 파일을 Excel 97 - 2003 통합 문서 (*.xls) 로 바꾸어 저장 후 불러오는 방법으로 해결하였다.. 찜찜



HDR(YES:헤더가 포함됨,NO:헤더가 포함되지않음)

IMEX(1:한 컬럼에 데이터 타입이 혼합되어있으면 모두 텍스트로 받아들이겠다는 뜻인것 같다.  0은 한 데이터타입으로 고정되는듯 하고 2는 잘 모르겠다..)


Powershell 사용

PS C:\Users\accountadm> $path = "파일 경로"

PS C:\> $conn = New-Object System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=$path;Extend

ed Properties='Excel 12.0 Xml;HDR=YES'")

PS C:\> $conn.open()

"0"개의 인수가 있는 "Open"을(를) 호출하는 동안 예외가 발생했습니다. "외부 테이블 형식이 잘못되었습니다."

위치 줄:1 문자:1

+ $conn.open()

+ ~~~~~~~~~~~~

    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException

    + FullyQualifiedErrorId : OleDbException



흡..