0

我正在使用 c# 将 xls 文件导入 sql server 2008 的任务,xls 文件在 xls 文件中包含 3 列(ProductCode = 具有字母数字值,Productname = 具有字符串值,Categoryids = 具有字母数字值)。

当我通过我的代码导入 xls 时,它读取 Productname、Categoryids 但 ProductCode 只有数值,它无法读取包含字符的代码。

例如:示例列值 productcode -30-sunscreen-250ml, 04 5056, 045714PC, 10-cam-bag-pouch-navy-dot, 100102

我读了 100102,但读不出来 [045714PC,04 5056,-30-sunscreen-250ml,10-cam-bag-pouch-navy-dot]

请提出任何解决方案。

谢谢

4

1 回答 1

2

Excel 的 OLEDB 驱动程序根据前 8 行数据对列的数据进行假设。如果给定列的前 8 行中的大部分,它假定整个列是数字,然后不能正确处理字母数字值。

对此有四种解决方案:

  1. 对传入的数据进行排序,以便前 8 行中的大多数在该列中具有字母数字值(以及在具有混合数字/字母数字数据的任何其他列中)。

  2. 在实际执行导入时忽略的行 2-9 中添加假数据行,并确保该行包含任何不应该是严格数字的列中的字母。

  3. 编辑位于注册表中 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel] 的名为“TypeGuessRows”的 REG_DWORD 键,并将 8 更改为 0。这将强制 Excel 在猜测列之前查看整个工作表数据类型。但是,这可能会影响性能。(您也可以将值从 8 更改为 1 到 16 之间的任何值,但这只会更改 Excel 查看的行数,而 16 对您来说可能仍然不够。)

  4. 在连接字符串中添加“;IMEX=1”。这将更改逻辑以查找至少一个非数字值,而不是查看大多数值。然后可以将其与解决方案 (1) 或 (2) 结合使用,以确保它“看到”前 8 行内适当列中的字母数字值。

于 2012-05-03T06:04:50.643 回答