我正在使用此代码将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 ???
中获取这些值答案 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)和日期格式)