2013-07-08 40 views
1

我无法解决了以下问题:DataGridView的列值显示问题

  • 连接到Excel(OLEDB连接)
  • 所有数据取到datagridview

示例源从Excel中获取(Col1到Col3 Excel属性是“常规”,Col4是日期特定的):

Col1 Col2 Col3 Col4 
Text1 1.5 288.77 3/1/2013 
Text2 1.3 352.47 3/1/2013 
Text3 1a 206.93 3/1/2013 
Text4 1 206.93 3/1/2013 
Text5 1 206.93 3/1/2013 
  • 一旦数据是在datagridviewDataGridView.AutoGenerateColumns=True),似乎理所当然 该Col2仅包含整数和不显示 细胞值不是整数。

例从DataGridView牵强:

Col1 Col2 Col3 Col4 
    Text1 1.5 288.77 3/1/2013 
    Text2 1.3 352.47 3/1/2013 
    Text3  206.93 3/1/2013 
    Text4 1 206.93 3/1/2013 
    Text5 1 206.93 3/1/2013 
  • 实际的问题是,我在DataGridView 对XML文件验证数据和我证明日志这给用户ROWID 和实际的来源值。我似乎无法获得datagridview的相同值 。
  • 我目前找到的唯一部分解决方案是明确地将所有Excel字段转换为文本,但是显然会混淆字段的一些 (例如:日期字段)。

如何获取datagridview中的所有SOURCE FILE值,然后执行所有后续的数据验证任务?

+1

甚至不能读取此内容。格式化一点。 – Bit

+0

格式问题的道歉 - 现在应该修复。 – UncleDo

回答

0

它看起来像只是试图将Excel原始数据(因为它在Excel工作表中格式化)提取到datagridview中用于显示目的,然后执行其他数据验证。 我建议使用下面的混合列连接字符串示例(IMEX):

strConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" + 
             "Data Source=" + strFilePath + ";Jet OLEDB:Engine Type=5;Extended Properties='Excel 12.0;HDR=NO;IMEX=1'"; 
+0

谢谢,这正是我所需要的 - 按原样获取数据,然后继续进行所需的验证。 – UncleDo

0

我会建议创建一个具有所需类型的数据列的DataTable,然后将数据获取到DataTable中。最后,将DataTable绑定到DataGridview。

+0

感谢塔里克,这里有一个更进一步的说明 - 我将它用于不同类型的数据,所以它应该是动态的。我无法设置确切的列数和类型,因为这些数据可能因来源不同而有所不同。 – UncleDo

+0

你有什么办法提前确定列数据类型吗? – Tarik

+0

我的意思是,您可以在运行时从Excel读取数据时确定列类型吗? – Tarik