如何读取 Excel 文件? [复制]

Posted

技术标签:

【中文标题】如何读取 Excel 文件? [复制]【英文标题】:How can I read Excel file? [duplicate] 【发布时间】:2015-04-28 06:48:39 【问题描述】:

我想用这段代码读取 Excel 文件:

var fileName = @"d:\1.xlsx"; 
var connectionString = string.Format(
    "Provider=Microsoft.Jet.OLEDB.4.0; data source="+fileName+
    "; Extended Properties=Excel 8.0;", fileName);

var adapter = new OleDbDataAdapter("SELECT * FROM [sheet1$]", connectionString);
var ds = new DataSet();

adapter.Fill(ds, "anyNameHere");

DataTable data = ds.Tables["anyNameHere"];

但是当运行程序时出现这个错误:

“System.Data.OleDb.OleDbException”类型的未处理异常 发生在 System.Data.dll

附加信息:外部表不是预期的格式。

我该如何解决?

【问题讨论】:

这个答案评价很高:***.com/a/1363480/49 试试吧 你应该看看这个网站connectionstrings.com/excel 【参考方案1】:

您的 excel 文件是 2007 版本 *.xlsx 并且您使用了错误的提供程序 (Microsoft.Jet.OLEDB.4.0)。

试试这个方法:

var fileName = @"d:\1.xlsx"; 
var connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=Excel 12.0;";

【讨论】:

【参考方案2】:

它已经回答了过去帖子中的问题请点击以下链接

Answer link

答案很简单

sConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Test.xlsx;Extended Properties=\"Excel 12.0;HDR=No;IMEX=1\"";

【讨论】:

【参考方案3】:

你有 diff 版本的 Excel 文件,获取文件名,如果扩展名为 .xlsx,使用这个

var fileName = @"d:\1.xlsx"; 
var connectionString = string.Format(
    "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="0";Extended Properties=Excel 12.0;", fileName);

【讨论】:

【参考方案4】:

我建议这个名为FileHelpers 的库。自从发现它以来,我从未自己编写过管道代码。它使您可以专注于实际的业务逻辑。

【讨论】:

以上是关于如何读取 Excel 文件? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

按键精灵如何把复制的数据写入到excel指定单元格中

用VB如何高效读取EXCEL中所有的sheet名称

java如何输出xls格式的Excel表格文件

java如何读取整个excel文件的内容

如何使用 Java 灵活读取 Excel 内容?

如何使用 Java 灵活读取 Excel 内容?