Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Excel读入带有C#的数据表时,数字格式不正确_C#_Excel_Datatable - Fatal编程技术网

将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工作表中。明白了-一切都是字符串。