从.Net中的Excel导入时的科学记数法

Chr*_*lli 7 .net c# oledb excel

我有一个C#/ .Net作业,从Excel导入数据然后处理它.我们的客户端删除文件并处理它们(很重要,因为我对原始文件没有任何控制权).

我使用OleDb库来填充数据集(我讨厌编写那些代码.严重的是,.Net开发人员所写的代码是不是更多?).该文件包含一些数字,如30829300,30071500等......这些列的数据类型是"文本".

导入数据时,这些数字将转换为科学记数法.反正有没有阻止这种情况发生?

-克里斯

小智 5

解决此问题的一种方法是更改​​select语句,而不是SELECT*执行此操作:

"SELECT Format([F1], 'General Number')  From [Sheet1$]"
 -or-
"SELECT Format([F1], \"#####\")  From [Sheet1$]"
Run Code Online (Sandbox Code Playgroud)

但是,如果您的单元格包含超过255个字符,则会出现以下错误:"多步OLE DB操作生成错误.检查每个OLE DB状态值,如果可用.没有完成任何工作."

幸运的是,我的客户并不关心在这种情况下出错.

这个页面还有很多好东西可以尝试:http: //www.dicks-blog.com/archives/2004/06/03/external-data-mixed-data-types/


P D*_*ddy 3

OleDb 库常常会弄乱 Excel 电子表格中的数据。这主要是因为它强制所有内容都采用固定类型的列布局,根据每列前 8 个单元格的值猜测每列的类型。如果它猜错了,您最终会得到转换为科学记数法的数字字符串。布莱赫!

为了避免这种情况,您最好跳过 OleDb 并直接自己阅读该表。您可以使用 Excel 的 COM 接口(也很糟糕!)或第三方 .NET Excel 兼容阅读器来完成此操作。 SpreadsheetGear就是这样一个运行良好的库,并且具有与 Excel 的 COM 界面非常相似的界面。