![](/img/trans.png)
[英]In C# how to access excel headers using OLEDB (without Automation)?
[英]How to show complete Excel data with Excel Headers in DataGridView? Cells becomes empty when I put headers on OleDB Connection
我想在 datagridview 中查看帶有標題的 Excel 數據。
我嘗試將 HDR=Yes 更改為 HDR=No。 它顯示了所有數據,但我在 Excel 文件上有標題。
我改變了這段代碼:
string pathconn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties=\"Excel 12.0;HDR=No;IMEX=1\";";
至:
string pathconn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties=\"Excel 12.0;HDR=No;IMEX=1\";";
我使用此 function 獲取帶有標題的數據。
public DataTable importaExcelaDT(string file)
{
DataTable dt = new DataTable();
DataTable dtExcel = new DataTable();
OleDbCommand cmdExcel = new OleDbCommand();
string cadenaConexion = "provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + file + "';Extended Properties = \"Excel 12.0 Xml;HDR=No;IMEX=1\";";
OleDbConnection olConexion = new OleDbConnection(cadenaConexion);
olConexion.Open();
OleDbDataAdapter oda = new OleDbDataAdapter();
dt = olConexion.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
string sheet = dt.Rows[0]["TABLE_NAME"].ToString();
cmdExcel.Connection = olConexion;
cmdExcel.CommandText = "SELECT * FROM [" + sheet + "]";
oda.SelectCommand = cmdExcel;
oda.Fill(dtExcel);
olConexion.Close();
olConexion.Dispose();
oda.Dispose();
return dtExcel;
}
您必須在列名中輸入數據表第一行的文本。 然后刪除該行。
Datatable dtExcel = importaExcelaDT(filePath);
for(int i = 0; i < dtExcel.Columns.Count; i++)
{
string columnName = dtExcel.Rows[0][i].ToString();
if (columnName == "") //throws error if column name is empty
columnName = " ";
dtExcel.Columns[i].ColumnName = columnName;
}
dtExcel.Rows.RemoveAt(0);
yourDataGridView.DataSource = dtExcel;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.