Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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
.net 使用GetOleDbSchemaTable读取excel列名时出现问题_.net_Excel_C# 3.0 - Fatal编程技术网

.net 使用GetOleDbSchemaTable读取excel列名时出现问题

.net 使用GetOleDbSchemaTable读取excel列名时出现问题,.net,excel,c#-3.0,.net,Excel,C# 3.0,在谷歌搜索之后,我发现了如何读取excel列名。虽然示例是在VB.Net中,但我使用的是C#.Net。 我的代码是: public DataSet ReadXslToDataset(string fileName,string sheetName) { ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+fileName+";Extended Properti

在谷歌搜索之后,我发现了如何读取excel列名。虽然示例是在VB.Net中,但我使用的是C#.Net。 我的代码是:

public DataSet ReadXslToDataset(string fileName,string sheetName)
            {
                ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+fileName+";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'";
                using (objConn = new OleDbConnection(ConnectionString))
                {
                        objConn.Open();

                        String[] restrection = { null, null, sheetName, null };
                        dtColumnNames = objConn.GetOleDbSchemaTable  (OleDbSchemaGuid.Columns, restrection);
                        string strColumnName = string.Empty;
                        if (dtColumnNames != null)

                          strColumnName = dtColumnNames.Rows[0]["COLUMN_NAME"].ToString();

                }
}
但是我发现列字段是空的,因此得到了异常

位置0处没有行。

excel文件看起来像

S.No    Issue
1      log4net message pattern not displayed properly in the log file
2      Reading blank rows from Excel while populating into dataset

我已确保传递了正确的文件和工作表名称。

位置0处没有行

试一试

很抱歉,我可能有点语法错误-我更喜欢VB.net

if (dtColumnNames != null) {
   if(dtColumnNames.Rows.Count > 0){
      strColumnName = ColumnNames.Rows[0]["COLUMN_NAME"].ToString
    }
  }