Я должен что-то автоматизировать для отдела финансов. У меня есть файл Excel, который я хочу прочитать, используя OleDb:
string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=A_File.xls;Extended Properties=""HTML Import;IMEX=1;""";
using (OleDbConnection connection = new OleDbConnection())
{
using (DbCommand command = connection.CreateCommand())
{
connection.ConnectionString = connectionString;
connection.Open();
DataTable dtSchema = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
if( (null == dtSchema) || ( dtSchema.Rows.Count <= 0 ) )
{
//raise exception if needed
}
command.CommandText = "SELECT * FROM [NameOfTheWorksheet$]";
using (DbDataReader dr = command.ExecuteReader())
{
while (dr.Read())
{
//do something with the data
}
}
}
}
Обычно connectionstring
имеет расширенное свойство "Excel 8.0", но файл не может быть прочитан таким образом, потому что он выглядит как HTML-файл, переименованный в .xls.
когда я копирую данные из xls в новый xls, я могу прочитать новый xls с помощью E.P. установите «Excel 8.0».
Да, я могу прочитать файл, создав экземпляр Excel, но я бы не стал ..
Любая идея, как я могу читать xls с помощью OleDb, не внося ручные изменения в xls или играя с диапазонами в конкретном Excel?
С уважением,
Michel