Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在DataGridView中显示包含Excel标题的完整Excel数据?当我在OleDB连接上放置标题时,单元格变为空_C#_Excel 2016 - Fatal编程技术网

C# 如何在DataGridView中显示包含Excel标题的完整Excel数据?当我在OleDB连接上放置标题时,单元格变为空

C# 如何在DataGridView中显示包含Excel标题的完整Excel数据?当我在OleDB连接上放置标题时,单元格变为空,c#,excel-2016,C#,Excel 2016,我想查看datagridview中带有标题的Excel数据 我已尝试将HDR=Yes更改为HDR=No。它显示所有数据,但Excel文件上有标题 我更改了此代码: string pathconn=@“Provider=Microsoft.ACE.OLEDB.12.0;数据源=“+filePath+”;扩展属性=\”Excel 12.0;HDR=否;IMEX=1\“;” 致: string pathconn=@“Provider=Microsoft.ACE.OLEDB.12.0;数据源=“+fil

我想查看datagridview中带有标题的Excel数据

我已尝试将HDR=Yes更改为HDR=No。它显示所有数据,但Excel文件上有标题

我更改了此代码:

string pathconn=@“Provider=Microsoft.ACE.OLEDB.12.0;数据源=“+filePath+”;扩展属性=\”Excel 12.0;HDR=否;IMEX=1\“;”

致:

string pathconn=@“Provider=Microsoft.ACE.OLEDB.12.0;数据源=“+filePath+”;扩展属性=\”Excel 12.0;HDR=否;IMEX=1\“;”


我使用此函数获取带有标题的数据

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第一行的文本。 然后删除该行

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;
Datatable dtExcel=importExceladt(文件路径);
对于(int i=0;i
我也有同样的问题。在我的例子中,问题是列标题中的字符串。如果标题包含“.”(点),则不显示整个列。我想问题在于角色的类型。尝试从标头中删除任何非ASCII字符,然后重试。仍然没有更改。我试图用“.”(点)替换列,也有没有点的列,但数据仍然是空的。仍然没有回答我的问题:(但感谢您的努力:)此函数返回一个包含所有数据(包括标题)的datatable。您只需将datatable指定为datagridview数据源。出于某种原因,HDR必须为No。如果使用HDR=Yes运行它,则不会返回标题。这是我尝试过的代码的输出,但在红色框中应该是我的数据的标题。是的,它返回我想要的所有数据,但标题在F1、F2、F3中命名…现在我明白你想要什么了。您希望将网格标题创建为Excel标题。