將EXCEL 中的數據導入,轉化爲DataTable

    /// <summary>
    /// 讀取EXCEL內容
    /// </summary>
    /// <param name="excelPath">EXCEL路徑</param>
    /// <param name="exceltableName">EXCEL工作表名 如sheet1,sheet2,不要加$</param>
    /// <returns>返回DataTable</returns>
    public static DataTable ReadExcel(string excelPath, string exceltableName)
    {
        string strConn = "";

        OleDbConnection conn = null;

        if (String.IsNullOrEmpty(excelPath))
        {
            return null;
        }

        if (!System.IO.File.Exists(excelPath))
        {
            return null;
        }

        try
        {
            if (excelPath.EndsWith(".xls"))
            {
                strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + excelPath + ";" + "Extended Properties=Excel 8.0;";
            }
            if (excelPath.EndsWith(".xlsx"))
            {
                strConn = @"Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + excelPath + ";" + "Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1;\"";

            }
            if (strConn.Equals(""))
            {
                throw new Exception("無效的EXCEL文件!");
            }
            conn = new OleDbConnection(strConn);
            conn.Open();
            string strExcel = "";
            OleDbDataAdapter myCommand = null;
            DataSet ds = null;
            strExcel = "select * from [" + exceltableName + "$]";
            myCommand = new OleDbDataAdapter(strExcel, strConn);
            ds = new DataSet();
            myCommand.Fill(ds, "TEMP");
            conn.Close();
            return ds.Tables[0];
        }
        catch
        {
            conn.Close();
            throw new Exception("解析Excel出錯。可能原因有:\\n\\n1:選擇文件類型非Excel格式文件,正確格式為:XXXX.xls!\\n\\n2:該文件被其他進程佔用!\\n\\n3:該文件不存在!");
        }
    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章