我有一个由第三方生成的excelsheet,我需要从中读取数据。在excelsheet中将一列格式化为百分比,当我从表格中读取数据时,我得到例如。 27%。但是,如果我打开excel并单击该单元格,我可以看到该单元格的实际值为0,27673528。如何在不打开excelfile和修改列类型的情况下获得该值?
我正在使用connectionstring:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Chr(34) & uploadFileName & Chr(34) & ";Extended Properties=" & Chr(34) & "Excel 8.0;HDR=NO;IMEX=1;" & Chr(34)
答案 0 :(得分:0)
您可以通过代码更改列类型,而不需要打开工作表。
xlYourRange.NumberFormat = "@"; //for text
xlYourRange.Value = "'0123456"; // for number
有关更改格式/类型的详细信息,请参阅此处:Set data type like number, text and date in excel column using Microsoft.Office.Interop.Excel in c#
答案 1 :(得分:0)
虽然这次我找到了某种解决方案。
因为我只有JET引擎才能使用,这个答案只对此有效,我猜。
问题:假设我有一个具有潜在价值的excel中的单元格2017-09-01 14:40:37。虽然该单元格仅显示2017-09-01 14:40。当我使用OleDbConnection和JET以及IMEX = 1检索该值时,我只收到2017-09-01 14:40。
解决方案:要获得整个值,我必须设置IMEX = 0。
警告:JET引擎根据第一行生成Column-Type假设。我在forst行中有文本,因此在fetch中忽略了alla日期。 我做了一个解决方法,首先更新没有日期值的单元格为null。然后我用IMEX = 0
获取所有值