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
흡..