从excel导入时强制数据类型

时间:2016-05-26 15:43:05

标签: c# sql excel sql-server-2012

我使用以下代码从excel读取数据并填充数据表。 后来我使用数据表来填充数据库表。

这样可以正常工作,直到列不是#34;一般"并且单元格值有多种格式。

| Column 1 |
------------
| 28.756%  |
| 14.654%  |
| *        |

其中第1列的数据类型为百分比,值仅显示为3位小数,但实际上包含的数据更多。

当列与上述类似时,导入的数据将被截断为3位小数,并且我们将失去屏幕上未显示的任何精度,即12.3544123%变为12.354%。

我发现解决方法是打开excel文件,选择所有单元格并将数据类型更改为常规。但我不希望用户或我的脚本这样做,因为我使用的一些excel文件非常大,开放和保存可能需要相当长的时间。

有没有办法可以调整下面的代码来强制执行" general"数据类型,因为它将值读入数据表?

String FilePath = "Code to get file path";
String SheetName = "Code to get sheet name";
String SheetRange = "Code to get sheet range";

SourceConnectionString = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" + FilePath + ";Extended Properties='Excel 8.0;IMEX=1;HDR=NO'";

OleDbConnection SourceConnection = new OleDbConnection(SourceConnectionString);

String strSQL = "SELECT * FROM [" + SheetName + "$" + SheetRange + "]";

OleDbCommand myCommand = new OleDbCommand(strSQL, SourceConnection);

DataTable myDataTable = new DataTable();

OleDbDataAdapter myDataAdaptor = new OleDbDataAdapter(myCommand);

myDataAdaptor.Fill(myDataTable);

0 个答案:

没有答案