0

我正在使用此代码将 xls 文件读入我的 DataGridView(C# Winform,2010)

string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;" +
                    "Data Source=" + FileName + ";Jet OLEDB:Engine Type=5;Extended Properties='Excel 12.0;HDR=YES;IMEX=1'";

但我发现 DataGrid 的单元格是空白的,但 xls 文件在那里有价值:="600+300"

至少 DataGridView 控件应该在那里显示600+300,或者至少显示一些东西?

如何在我的 DataGridView 中获取这些值???

4

1 回答 1

1

从 Excel 电子表格导入时有许多限制,其中之一是 TypeGuessRows 问题。默认情况下,Jet 引擎将仅扫描前 8 行以确定列的数据类型,任何不匹配的内容都不会导入数据集中。

建议一:

为了帮助减轻此问题,您可以通过将名为 TypeGuessRows 的注册表属性设置为 0 来增加 Excel 将扫描的行数,如下例所示。

注册表项:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\ExcelRegistry

键名: TypeGuessRows

默认值:8

新值:0

根据您的操作系统和 Jet 版本,此密钥可能位于稍微不同的位置,或者您甚至可能必须添加它。

更多信息: http ://sqlserverrider.wordpress.com/2012/11/11/excel-data-type-guess-registry-setting/

建议二:

另一个潜在问题是 Excel 中单元格的格式。格式也会影响 Jet 引擎可以提供的值。我建议您在导入之前将所有单元格标记为文本以提供一致的行为。请注意,这可能会将日期转换为 Julian 格式(自纪元以来的天数),但它们可以很容易地被解析回来,如果数据以文本格式开头(仅适用于 General 和 Date格式化)

于 2013-10-10T13:06:08.707 回答