c#Excel导入查询

我已经被要求导入一个Excel电子表格,这很好,但我得到一个导入包含数字和字母数字字符的某个单元格的问题。

擅长例如

Col ABC Row 0123 8 Fake Address CF11 1XX XX123 8 Fake Address CF11 1XX 

根据上面的示例,当数据集被加载时,将第2行col(A)作为数字字段处理,导致数组中的空列。

我的OleDb的连接是

 var dbImportConn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dataSource + @";Extended Properties=""Excel 8.0;HDR=No;IMEX=1"";") 

在这方面,我已经设置IMEX = 1,它应该将所有内容parsing为string到数据集中。 另外,如果我改变行1上校(A)有'XX123'整个上校(A)成功parsing为string! 不幸的是,这不会帮助我的情况,因为excel文件是从外部客户端传递的,他们也build议不要使用标题行来解决我的问题。

我的一个想法在这一点上是当我收到文件编辑文件(以编程方式)插入一个标题,但再次作为客户端可能会改变多less列被包含这不会是一个安全的select对我来说。

所以基本上我需要find一个解决scheme来处理电子表格中的当前格式,并将所有单元格传递到数组中。 有没有人遇到过这个问题? 或者知道如何解决这个问题?

我等待你的想法谢谢斯科特ps如果这不清楚只是喊

嗨有一个名为TypeGuessRows的registry设置,您可以更改它,告诉Excel在决定它的types之前扫描所有列。 目前,它似乎设置为读取列中的x行数并确定列的types,例如,如果您的第一个x行是整数,并且x + 1是string,则导入将失败,因为它已经决定这是一个整数列。 您可以在决定之前更改registry设置以读取整个列。

请看这也

http://jingyangli.wordpress.com/2009/02/13/imex1-revisit-and-typeguessrows-setting-change-to-0-watch-for-performance/

这不是一个直接的答案,但我想build议您使用Excel数据读取器 ,这是LGPL许可证下的开源,是用C#编写的轻量级和快速库,用于读取Microsoft Excel文件('97-2007)。

检查这个链接: http : //www.dbsoftlab.com/imex1.html

在那里提供的解决scheme,或多或less,是相同的相比,一个SAJ张贴…但国际海事组织这个链接有更好的解释。