Хорошо, давайте посмотрим, смогу ли я сделать это разумным.
У меня написана программа, которая анализирует файл 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 может содержать функции
которые не совместимы с текстом (вкладка
разделители). Вы хотите сохранить
Рабочая тетрадь в этом формате?
- Сохранить этот формат, который оставляет
Нажмите на любую несовместимую функцию, нажмите
Да.
- Чтобы сохранить функции, нажмите Нет.
Десять сохранить копию в последнем Excel
формат.
- Чтобы увидеть, что может быть потеряно, нажмите
Помощь.
Если я нажму «Нет», а затем сохраню его в текущем формате Excel, программа будет работать нормально.
Итак, я предполагаю, что это сохранено в каком-то безумном старом формате Excel?
Полагаю, мои вопросы будут такими:
- Как узнать, какая версия Excel
сохранил это?
- Как я могу разобрать его в его текущем
состояние
- -или- Можно ли программно сохранить его как более новую версию?
Надеюсь, это понятно ... Спасибо.