Как показать полные данные Excel с заголовками Excel в DataGridView? Ячейки становятся пустыми, когда я помещаю заголовки в Соединение OleDB - PullRequest
0 голосов
/ 11 октября 2019

Я хочу просмотреть данные Excel с заголовками внутри datagridview.

Я попытался изменить HDR = Да на HDR = Нет. Он показывает все данные, но у меня есть заголовки в файле 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\";";

Это мои данные Excel:

Ответы [ 2 ]

0 голосов
/ 14 октября 2019

Вы должны поместить в название столбца текст первой строки таблицы данных. Затем удалите строку.

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;
0 голосов
/ 11 октября 2019

Я получаю данные с заголовками с помощью этой функции.

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;
}
...