DataGridView无法识别excel中的“text”

时间:2013-10-10 10:49:58

标签: c# winforms visual-studio-2010

我正在使用此代码将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”

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

如何在我的DataGridView ???

中获取这些值

1 个答案:

答案 0 :(得分:1)

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

建议1:

为了帮助减轻此问题,您可以通过将名为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/

建议2:

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