문제
알았어, 내가이 말을 할 수 있는지 봅시다.
Excel 파일을 구문 분석하는 프로그램이 있으며 잘 작동합니다. 다음을 사용하여 파일에 들어갑니다.
string FileToConvert = Server.MapPath(".") + "\\App_Data\\CP-ARFJN-FLAG.XLS";
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + FileToConvert + ";Extended Properties=Excel 8.0;";
OleDbConnection connection = new OleDbConnection(connectionString);
connection.Open();
//this next line assumes that the file is in default Excel format with Sheet1 as the first sheet name, adjust accordingly
OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM [CP-ARFJN-FLAG$]", connection);
그리고 이것은 잘 작동합니다. 그러나 실제 파일에서 시도 할 때 (다른 프로그램으로 나에게 제공됨)이 오류가 발생합니다.
System.Data.OleDb.OleDbException: External table is not in the expected format. at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection) at System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup) at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) at System.Data.OleDb.OleDbConnection.Open() at wetglobe.Page_Load(Object sender, EventArgs e)
그러나 이것은 내가 문제가 있다고 생각하는 곳입니다. 해당 파일을 가져 와서 로컬 Excel로 저장하면 먼저이 팝업을 얻습니다.
CP-Arfjn-flag.xls에는 텍스트와 호환되지 않는 기능이 포함되어있을 수 있습니다 (탭 구분). 이 형식으로 통합 문서를 유지 하시겠습니까?
- 양립 할 수없는 기능을 제거하는이 형식을 유지하려면 예를 클릭하십시오.
- 기능을 보존하려면 No. 10을 클릭하십시오. 사본을 최신 Excel 형식으로 저장하십시오.
- 잃어버린 것을 보려면 도움을 클릭하십시오.
아니오를 클릭 한 다음 현재 Excel 형식으로 저장하면 프로그램이 제대로 작동합니다.
그래서 나는 이것이 미친 오래된 Excel 형식으로 저장되었다고 가정하고 있습니까?
내 질문은 다음과 같습니다.
- Excel 버전을 어떻게 저장했는지 어떻게 알 수 있습니까?
- 현재 상태에서 어떻게 구문 분석 할 수 있습니까?
- - 또는- 프로그램 적으로 최신 버전으로 저장할 수 있습니까?
분명하기를 바랍니다 ... 감사합니다.
해결책
타사 앱에서 생성 된 XLS 파일이 실제로 Excel 형식이 아닐 수 있습니다. 실제로 .xls 확장자가있는 탭으로 연결된 텍스트 파일 일 수 있습니다.
텍스트 편집기와 함께 열고 참조하십시오.
탭이 구분되면 OLEDB 어댑터를 버리고 표준 텍스트 파일로 열/구문 분석 할 수 있습니다.
다른 팁
생성 된 파일의 형식이 향후 변경 될 가능성이있는 경우 (아마도 타사 앱을 업그레이드 할 때) 사무실 1 차 인터 로프 어셈블리. 이들은 Excel에서 생성 한 모든 버전 또는 형식을로드합니다. 단점은 서버에 사무실을 설치해야한다는 것입니다.
나는 문제를 해결했다. Excel 파일은 MS Excel 2007 "저장으로 97-2003"이 아닌 MS Excel 2003에 의해 생성되어야합니다. 따라서 모든 소스에서 파일을 다운로드해야합니다. 그런 다음 데이터를 수동으로 시트에 복사하십시오. 그것은 나와 함께 일했습니다.