我有一个 Winform 应用程序,可将 Excel 文件导入到 datagridview。它运行良好,但只有一个问题:我在 excel 文件中有 2 列是整数。如果我更改其中一列的值并添加一个不是 integer 的 char ,则 datagridview 中缺少该值。
我试图将 excel 文件中的列属性更改为 'Text',因为列类型最初是 'Double' ,但它仍然不会影响 datagridview。
我还尝试使用我需要的类型(全部为字符串)创建自己的列,然后克隆数据表并将克隆的一个添加到 datagridview ,但仍然存在同样的问题。
这是我单击导入按钮时的代码:
private void btnImport_Click(object sender, EventArgs e)
{
#region Import from the Excel
try
{
string pathConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + txtPath.Text + ";Extended Properties=\"Excel 8.0;HDR=Yes;\";";
OleDbConnection conn = new OleDbConnection(pathConn);
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter("Select * from [" + sheetName + "$]", conn);
System.Data.DataTable dt = new System.Data.DataTable();
myDataAdapter.Fill(dt);
System.Data.DataTable dtCloned = dt.Clone();
foreach (DataColumn col in dtCloned.Columns)
{
col.DataType = typeof(String);
}
foreach (DataRow row in dt.Rows)
{
dtCloned.ImportRow(row);
}
ExceldataGridView.DataSource = dtCloned;
dt.Dispose();
myDataAdapter.Dispose();
conn.Close();
}
catch
{
MessageBox.Show("Error");
return;
}
#endregion
}