简体   繁体   English

如何使用C#代码阅读Excel Sheet 2016

[英]How can read excel sheet 2016 using c# code

I am reading excel sheet using below code but that gives blank data table. 我正在使用下面的代码阅读Excel工作表,但这给出了空白数据表。

  public static DataTable ReadExcel(string fileName)
    {
        string fileExt = ".xlsx";
        string conn = string.Empty;
        DataTable dtexcel = new DataTable();
        if (fileExt.CompareTo(".xlsx") == 0)
            conn = @"provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties='Excel 8.0;HRD=Yes;IMEX=1';"; //for below excel 2007  
        else
            conn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties='Excel 12.0 Xml;HDR=YES';"; //for above excel 2007  
        using (OleDbConnection con = new OleDbConnection(conn))
        {
            try
            {
                OleDbDataAdapter oleAdpt = new OleDbDataAdapter("select * from [Sheet1$]", con); //here we read data from sheet1  
                oleAdpt.Fill(dtexcel); //fill excel data into dataTable  
            }
            catch(Exception ex) { }
        }
        return dtexcel;
    }

It displays empty data table as below screenshot. 它显示空的数据表,如下图所示。 在此处输入图片说明

you forgot few things, like OleDbConnection.Open(); 您忘记了一些东西,例如OleDbConnection.Open(); and using OleDbCommand 并使用OleDbCommand

public DataTable ReadExcel(string fileName)
        {
            string fileExt = ".xlsx";
            string sheetName = "Sheet1$";
            string conn = string.Empty;
            DataTable dt = new DataTable();
            if (fileExt.CompareTo(".xlsx") != 0)
                conn = @"provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties='Excel 8.0;HRD=Yes;IMEX=1';"; //for below excel 2007  
            else
                conn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties='Excel 12.0 Xml;HDR=YES';"; //for above excel 2007  
            using (OleDbConnection con = new OleDbConnection(conn))
            using ( OleDbCommand cmd = new OleDbCommand())            
            {
                con.Open();
                try
                {
                    cmd.Connection = con;                   
                    cmd.CommandText = "SELECT * FROM [" + sheetName + "]";                     
                    dt.TableName = sheetName;

                    using (OleDbDataAdapter da = new OleDbDataAdapter(cmd))
                    {
                        da.Fill(dt);
                    }

                }
                catch (Exception ex) { }
            }
            return dt;
        }

try rhis code hope it help you 尝试使用rhis代码,希望对您有所帮助

protected void btn_Click(object sender, EventArgs e)
    {

        string filename = System.IO.Path.GetFileName(FileUpload1.PostedFile.FileName);
        FileUpload1.SaveAs(Server.MapPath("File/" + filename));
        string CurrentFilePath = Server.MapPath("File/" + filename);
        string connectString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + CurrentFilePath + ";Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1;\"";
        OleDbConnection conn = new OleDbConnection(connectString);
        conn.Open();
        DataTable Sheets = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

        foreach (DataRow dr in Sheets.Rows)
        {
            string sht = dr[2].ToString().Replace("'", "");
            OleDbDataAdapter da = new OleDbDataAdapter("Select * From [" + sht + "]", conn);
            DataTable dt = new DataTable();
            da.Fill(dt);

        }

    }

For me working following code 对我来说,下面的代码

 string filePath = AppDomain.CurrentDomain.BaseDirectory.Replace("\\bin\\Debug", "").Replace("\\bin\\Release", "");
                string fileLocation = filePath + ConfigurationManager.AppSettings["EmployeeDetailsFilePath"];
                Stream inputStream = File.Open(fileLocation, FileMode.Open, FileAccess.Read);
                IExcelDataReader reader = ExcelReaderFactory.CreateOpenXmlReader(inputStream);
                reader.IsFirstRowAsColumnNames = true;
                DataSet dataSet = reader.AsDataSet();
                inputStream.Dispose();
                reader.Dispose();

here must add reference of ExcelDataReader dll in your project. 在这里必须在您的项目中添加ExcelDataReader dll的引用。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM