我使用以下代码从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);