将数据从Excel传输到dataGridView

时间:2011-11-21 01:43:33

标签: c# excel

我想在C#中将数据从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;

我希望我解释得很清楚。对不起我的英文不好。

感谢。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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""";

它会强制性地以字符串形式读取所有值。