将Excel读入带有C#的数据表时,数字格式不正确
请务必让我知道这是否是副本;我找不到真正的答案 找到这个,相关的一个, 但它已经有好几年的历史了 因此,我正在用将Excel读入带有C#的数据表时,数字格式不正确,c#,excel,datatable,C#,Excel,Datatable,请务必让我知道这是否是副本;我找不到真正的答案 找到这个,相关的一个, 但它已经有好几年的历史了 因此,我正在用C.将一个Excel文件读入一个DataTable 我的代码如下: string conStr = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0;HDR=NO;IMEX=1;\"", filePath); System.Data.Da
C.
将一个Excel文件读入一个DataTable
我的代码如下:
string conStr = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0;HDR=NO;IMEX=1;\"", filePath);
System.Data.DataTable fileData = new System.Data.DataTable();
using (OleDbConnection connection = new OleDbConnection(conStr))
{
connection.Open();
if (string.IsNullOrEmpty(sheetName))
{
sheetName = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null).Rows[0]["TABLE_NAME"].ToString();
}
string selectCmd = string.Format(sqlSelect, sheetName);
using (OleDbCommand command = new OleDbCommand(selectCmd, connection))
using (OleDbDataAdapter adapter = new OleDbDataAdapter(command))
{
adapter.Fill(fileData);
}
}
因此,这将读取中的所有内容并填充我的DataTable
通过代码,我进一步对一些内容执行验证。我正在为此使用RegEx
然而,我遇到了一个问题,数字被格式化为科学符号,或指数格式
例如,我有0.000083
,它被读取为8.3e-005
那么-如何读取excel文件并保留原始的0.000083
如果需要的话,我会把所有东西都作为一根绳子带进来。。。我已经使用了扩展属性,但似乎没有任何东西影响数据的读取方式
正在寻找一种解决方案,使我不必将每个单元格添加到数据表中
更新
同时,我能做的另一件事是将科学符号转换成十进制,然后检查它。虽然理想情况下,我希望首先引入不带符号的数据。我认为这里不需要正则表达式标记。在数据表中填充数字的列上设置了哪种类型的数据?是十进制、双精度、浮点、字符串吗?还有,你在哪里看到科学符号?@Gusman-excel中的数据是通用的。我们在输入文件中使用了不同的类型。似乎OleDB在读取时将其更改为符号。当我得到要验证的值时,我看到了这一点。我的意思是什么类型的数据一旦被读取就在DataTable上,而不是在excel工作表中。明白了-一切都是字符串。