我想在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;
我希望我解释得很清楚。对不起我的英文不好。
感谢。
答案 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""";
它会强制性地以字符串形式读取所有值。