'm使用Microsoft.ACE.OLEDB.12.0提供程序从Excel工作表读取数据。 我使用OleDbDataReader
和他的GetValue()
获取数据。 第一行/行(可以多于一个)是字符串标题,我不能跳过它。 接下来是设置为0小数位的数字数据,但是当我选择它们中的一个时,它会以正确的十进制格式显示在条中。当第一行是字符串时,GetValue()不会读取小数值
如何读取像Excel中的栏一样的原始十进制格式的混合数据? 我无法更改Excel表单的设置。
这里是我的代码:
using System.Data.OleDb;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
string query = "SELECT * FROM [List1$]";
string connString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\Temp\Test.xls;Extended Properties=""Excel 12.0;HDR=NO;IMEX=1""";
using (OleDbConnection connection = new OleDbConnection(connString))
{
connection.Open();
using (OleDbCommand command = new OleDbCommand(query, connection))
{
using (OleDbDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
object value = reader.GetValue(0);
}
}
}
}
}
}
}
您是否尝试使用“.GetDecimal”而不是“.GetValue”? – jbl 2013-02-22 13:44:49
是的。 GetDecimal抛出异常,因为有空格字符。 GetFieldType返回字符串。所以它必须在OleDbCommand或OleDbConnection设置的某个地方,也许在连接字符串中有一些attribut。 – Ciboor 2013-02-22 13:55:41
我编辑了你的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 – 2013-02-22 15:08:58