从Excel首页读取数据 - C#

问题描述:

有2个Excel表格 - FileA & FileB。从Excel首页读取数据 - C#

FileA中只有一张。它有数据&被命名为'Sep'。没有隐藏的床单肯定。

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

用FileA测试,我写了这段代码,它工作正常。 FileB出现问题。在代码中检查FileA模式时,我看到'SEP'显示为行2。所以,写了这个获得firstsheet的名字

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

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

  1. 为什么这是不同的床单不同。
  2. 我应该写什么,以便我总是从firstsheet获取数据的数据。

    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 hereenter image description here

+4

我会建议使用EPPlus来读取excel文档,因此您的应用程序不依赖于正在安装的Office。 请参阅:https://epplus.codeplex.com/ – 2014-10-10 06:46:30

+0

我第二!使用EPPLus。阅读和创建excel文件非常棒。 – navigator 2014-10-10 07:23:30

+0

好的,谢谢.... – Qwerty 2014-10-10 07:26:48

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

因此,您不需要安装任何Office组件,而且使用起来非常简单。 自2014年1月起使用,我一直都很喜欢它。 您可以从CodePlexGitHubGitHub

得到它如果您只使用。这不是那么简单,但可以让你用Excel文件做任何事情 - 或者差不多 - 。