2011-11-21 84 views
2

当我想将数据从Excel传输到C#中的dataGridView时,出现问题。将数据从Excel传输到dataGridView

我的Excel的列有数字和字母数字值。但是例如,如果列有3个数字和2个字母数字值,那么只有数字显示在dataGridView中,反之亦然。为什么没有显示所有的值?下一个是什么情况:

Excel's Column:     DataGridView's Column: 
    45654        45654 
    P745K 
    31233        31233 
    23111        23111 
    45X2Y 

这里是我的代码加载的dataGridView:

string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\test.xls;Extended Properties=""Excel 8.0;HDR=YES;"""; 

     DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OleDb"); 

     DbDataAdapter adapter = factory.CreateDataAdapter(); 

     DbCommand selectCommand = factory.CreateCommand(); 
     selectCommand.CommandText = "SELECT * FROM [sheet1$]"; 

     DbConnection connection = factory.CreateConnection(); 
     connection.ConnectionString = connectionString; 

     selectCommand.Connection = connection; 

     adapter.SelectCommand = selectCommand; 

     data = new DataSet(); 

     adapter.Fill(data); 

     dataGridView1.DataSource = data.Tables[0].DefaultView; 

我希望我解释得很好。对不起,我英语不好。

谢谢。

回答

0

您可以只添加“IMEX = 1”到您的连接字符串像↓

string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\test.xls;Extended Properties=""Excel 8.0;HDR=YES;IMEX=1"""; 

这将forceably读取为字符串的所有值。

0

尝试在导入之前将所有单元格格式化为Excel表格中的文本。 (你可以手动或编程方式做)