【发布时间】:2010-11-17 07:57:00
【问题描述】:
我必须为财务部门自动化一些事情。我有一个要使用 OleDb 读取的 Excel 文件:
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”,但无法以这种方式读取该文件,因为它似乎是一个重命名为 .xls 的 html 文件。
当我将数据从 xls 复制到新的 xls 时,我 可以 使用 E.P. 读取新的 xls。设置为“Excel 8.0”。
是的,我可以通过创建 Excel 实例来读取文件,但我宁愿不... 知道如何使用 OleDb 读取 xls 而无需手动更改 xls 或在实例化的 Excel 中使用范围?
问候,
米歇尔
【问题讨论】: