从Excel First Sheet读取数据 - C#

时间:2014-10-10 06:40:05

标签: c# asp.net

有2张Excel表格 - FileA& FILEB。

FileA中只有一个工作表。它有数据和被命名为' Sep'没有隐藏的床单肯定。

FileB有3张。第一个有数据&被命名为' Sheet1'。

使用FileA进行测试,我编写了这段代码并且工作正常。 FileB出现问题。在代码中检查FileA架构时,我看到了' SEP'显示为行2。所以,写下这个以获得第一个名字

string FirstSheetName = dtSchema.Rows[2]["TABLE_NAME"].ToString();

但对于FileB,Sheet1显示为架构中的第一行。

  1. 为什么不同的纸张会有所不同。
  2. 我应该写什么,以便我总是从第一张有数据的数据中获取数据。

     private void GetDataFromExcel()
         {
           DataSet dsExcel = null;
            if (true)
             {
                OleDbCommand cmdSelect = null;
                OleDbDataAdapter daXls = null;
                OleDbConnection xlsCSV = null;            
                DataTable dtSchema = null;
                try
                 {
                  xlsCSV = new OleDbConnection(ExcelFileConnString);
    
          if (xlsCSV.State == ConnectionState.Closed)
           {
             xlsCSV.Open();
           }
    
          dtSchema = xlsCSV.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, 
                                                      null); 
          //Screenshots of dtSchema attached.                   
          if (dtSchema.Rows.Count > 0)
           {
             string FirstSheetName = dtSchema.Rows[2]["TABLE_NAME"]
                                          .ToString();
             cmdSelect = new OleDbCommand("select * from [" + 
                                                  FirstSheetName + "]", 
                                                  xlsCSV);
             daXls = new OleDbDataAdapter();
             daXls.SelectCommand = cmdSelect;
             dsExcel = new DataSet();
             daXls.Fill(dsExcel);
             xlsCSV.Close();
           }
    
         int count = dsExcel.Tables[0].Rows.Count;
        }
        catch (Exception)
         {
    
         }
        finally
         {
           if (xlsCSV != null && xlsCSV.State == ConnectionState.Open)
             {
               xlsCSV.Close();
               xlsCSV.Dispose();
             }
           if (cmdSelect != null)
             {
               cmdSelect.Dispose();
             }
         }
        }        
    }
    

    enter image description here enter image description here

1 个答案:

答案 0 :(得分:1)

尝试使用库ExcelDataReader。您可以以旧格式(.xls)和新格式(.xlsx)读取和保存Excel文件。

这样您就不需要安装任何Office组件,而且使用起来非常简单。 我从2014年1月开始使用,我一直很喜欢它。 您可以从CodePlexGitHub

获取

如果您只使用.xlsx文件并且需要更高级的东西,可以尝试使用Microsoft Office Open XML SDK。它不是那么简单,但允许您使用Excel文件做任何事情 - 或几乎 - 。