【发布时间】:2021-10-06 13:12:55
【问题描述】:
我正在使用 OleDB 从 Excel 导入 DataGridView。 我正在导入的单元格具有此字符串“01/01/2029”,但是当我使用 OleDB 导入 DataGridView 时,当我想保留它时,该字符串将转换为 DateTime“01/01/2029 0:00:00”字符串使用他的原始格式“01/01/2029”。 我试图转换它和一堆东西,我找不到解决方案...... 谁能找到问题出在哪里?
string filePath = openFileDialog1.FileName;
string extension = Path.GetExtension(filePath);
string header = "YES";
string conStr, sheetName;
conStr = string.Empty;
switch (extension)
{
case ".xls":
conStr = string.Format(Excel03ConString, filePath, header);
break;
case ".xlsx":
conStr = string.Format(Excel07ConString, filePath, header);
break;
}
using (OleDbConnection con = new OleDbConnection(conStr))
{
using (OleDbCommand cmd = new OleDbCommand())
{
cmd.Connection = con;
con.Open();
DataTable dtExcelSchema = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
sheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();
con.Close();
}
}
using (OleDbConnection con = new OleDbConnection(conStr))
{
using (OleDbCommand cmd = new OleDbCommand())
{
using (OleDbDataAdapter oda = new OleDbDataAdapter())
{
DataTable dt = new DataTable();
cmd.CommandText = "SELECT * From [" + sheetName + "]";
cmd.Connection = con;
con.Open();
oda.SelectCommand = cmd;
oda.Fill(dt);
con.Close();
dataGridView1.DataSource = dt;
}
}
}
【问题讨论】:
-
这就是我得到postimg.cc/sQXJxBCN的结果。 Excel中单元格的格式是正确的。导入时我可以做些什么来保持 Excel 的单元格格式,因为我认为 OleDB 将其转换为 DateTime。我尝试过这样的事情,但它没有转换为字符串或替换任何东西......
foreach (DataGridViewRow row in dataGridView1.Rows) { row.Cells[5].Value = row.Cells[5].Value.ToString().Replace("/01/", "JAN"); }
标签: c# datagridview oledb