문제

알았어, 내가이 말을 할 수 있는지 봅시다.

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에 의해 생성되어야합니다. 따라서 모든 소스에서 파일을 다운로드해야합니다. 그런 다음 데이터를 수동으로 시트에 복사하십시오. 그것은 나와 함께 일했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top