【发布时间】:2021-01-15 03:16:36
【问题描述】:
我目前正在开发一个 Excel 导入/导出实用程序,该实用程序利用现有的 OleDB 代码进行导入过程,并使用 Open Office XML 生成电子表格。到目前为止,电子表格的生成格式正确,并且可以在 Microsoft Excel 2019 中打开而没有问题。但是由于某种原因,当尝试导入数据时,OleDB 立即抛出异常并失败,异常消息为“系统资源超出”。然而,我发现一个奇怪的解决方法是在 Microsoft Excel 2019 中打开电子表格,然后保存它,然后尝试导入它。这表明我在生成电子表格时做错了。
以下是一些相关代码:
const query = "Select TOP 25 * from [Sheet1$]";
var ds = new DataSet();
var connectionString = $"Provider=Microsoft.Ace.OLEDB.12.0;Data Source={fileName};Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\"";
using (var con = new OleDbConnection(connectionString))
using (var adpt = new OleDbDataAdapter(query, con))
{
adpt.Fill(ds, "[Sheet1$]"); // Exception occurs here
}
DataTable table = ds.Tables[0];
return table;
这是我使用 Open Office XML Sheet 写作课程生成的示例电子表格的LINK。我不想将所有代码复制到这个问题中,因为它相当冗长。如果有必要,我愿意发布它。
【问题讨论】:
-
查找产生错误的文件。在某处保存它的副本。在 Excel 中打开文件并保存。关闭excel。比较两个文件(未修复和已修复)以查看差异。 (搜索例如“文件比较实用程序”并自行选择。)
-
我试过这个。 Excel 在重新格式化工作表数据的基础上,将几个 xml 文件添加到 .xlsx 包中。简单地做一个差异并找出问题是一项艰巨的任务。我希望对 OleDb、Excel 和 OpenXML 有更多了解的人可能知道发生了什么。
-
那么值得将该信息添加到问题中。 (评论是暂时的。)