• C# 读取Excel和DBF文件


    //获excel中多个sheet中的数据
    
      /// <summary>
            /// 读取导入Excel文件内容
            /// </summary>
            /// <param name="fileName">文件路径(上传后)</param>
            /// <param name="columnString">Excel中的列 名</param>
            /// <param name="isReadAllExcelSheet">是否读取多个Sheet</param>
            /// <param name="message">(out)消息提示</param>
            /// <returns></returns>
            public DataTable ReadDataFromExcel(string fileName, string columnString, bool isReadAllExcelSheet, out string message)
            {
                message = "";
                try
                {
                    string strCon = "";
    
                    string fileExt = Path.GetExtension(fileName).ToLower();
    
                    if (fileExt == ".xls")
                    {
                        strCon = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " + fileName + ";Extended Properties=" + (char)34 + "Excel 8.0;HDR=Yes;IMEX=1;" + (char)34;
                    }
                    else if (fileExt == ".xlsx")
                    {
                        strCon = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = " + fileName + ";Extended Properties=" + (char)34 + "Excel 12.0;HDR=Yes;IMEX=1;" + (char)34;
                    }
                    else
                    {
                        message = "读取失败,非excel文件格式。";
                        return null;
                    }
    
                    OleDbConnection excelConnection = new OleDbConnection(strCon);
    
                    excelConnection.Open();
    
                    #region 获取所有sheet表名称
    
                    DataTable excelData = new DataTable();
    
                    DataTable getTableNameData = excelConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
    
    
                    //获取excel中的第一个sheet中的数据
                    //ReadEachExcelSheetData(excelConnection, ((String)getTableNameData.Rows[0]["TABLE_NAME"]).ToString(), columnString, ref excelData);
    
    
                    //获取excel中有多个sheet中的数据
                    foreach (DataRow row in getTableNameData.Rows)
                    {
    
                        excelData = ReadEachExcelSheetData2(excelConnection, ((String)row["TABLE_NAME"]).ToString(), columnString);
    
                        if (excelData.Rows.Count <= 0)
                        {
                            break;
                        }
                    }
                    getTableNameData = null;
    
                    #endregion
    
                    return excelData;
                }
                catch (Exception ex)
                {
                    message = "数据文件或者内容格式有严重错误(" + ex.Message + "),请检查!";
                    return null;
                }
            }
    
    
            public void ReadEachExcelSheetData(OleDbConnection excelConnection, string tableName, string columnString, ref DataTable excelData)
            {
                try
                {
                    tableName = "[" + tableName + "]";
                    string sql = "";
    
                    string queryFieldText = string.Empty;
    
    
                    if (string.IsNullOrEmpty(queryFieldText))
                    {
                        queryFieldText = "*";
                    }
                    else
                    {
                        foreach (string column in columnString.Split(','))
                        {
                            queryFieldText += "[" + column + "],";
                        }
                        queryFieldText = queryFieldText.Trim(',');
    
                    }
                    sql = @"
                                    SELECT 
                                            {0}
                                    FROM 
                                            {1}
                                    ";
                    sql = string.Format(sql, queryFieldText, tableName);
    
                    DataSet ds = new DataSet();
                    OleDbDataAdapter myAdp = new OleDbDataAdapter(sql, excelConnection);
                    myAdp.Fill(ds, tableName);
    
                    if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                    {
                        excelData.Merge(ds.Tables[0]);
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
    
            }
    
    
    //获取excel中第一个sheet中的数据
    
      /// <summary>
            /// 读取导入Excel文件内容
            /// </summary>
            /// <param name="fileName">文件路径(上传后)</param>
            /// <param name="columnString">Excel中的列 名</param>
            /// <param name="isReadAllExcelSheet">是否读取多个Sheet</param>
            /// <param name="message">(out)消息提示</param>
            /// <returns></returns>
            public DataTable ReadDataFromExcel(string fileName, string columnString, bool isReadAllExcelSheet, out string message)
            {
                message = "";
                try
                {
                    string strCon = "";
    
                    string fileExt = Path.GetExtension(fileName).ToLower();
    
                    if (fileExt == ".xls")
                    {
                        strCon = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " + fileName + ";Extended Properties=" + (char)34 + "Excel 8.0;HDR=Yes;IMEX=1;" + (char)34;
                    }
                    else if (fileExt == ".xlsx")
                    {
                        strCon = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = " + fileName + ";Extended Properties=" + (char)34 + "Excel 12.0;HDR=Yes;IMEX=1;" + (char)34;
                    }
                    else
                    {
                        message = "读取失败,非excel文件格式。";
                        return null;
                    }
    
                    OleDbConnection excelConnection = new OleDbConnection(strCon);
    
                    excelConnection.Open();
    
                    #region 获取所有sheet表名称
    
                    DataTable excelData = new DataTable();
    
                    DataTable getTableNameData = excelConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
    
    
                    //获取excel中的第一个sheet中的数据
                    ReadEachExcelSheetData(excelConnection, ((String)getTableNameData.Rows[0]["TABLE_NAME"]).ToString(), columnString, ref excelData);
    
    
                    //获取excel中有多个sheet中的数据
                    //foreach (DataRow row in getTableNameData.Rows)
                    //{
    
                    //    excelData = ReadEachExcelSheetData2(excelConnection, ((String)row["TABLE_NAME"]).ToString(), columnString);
    
                    //    if (excelData.Rows.Count <= 0)
                    //    {
                    //        break;
                    //    }
                    //}
                    getTableNameData = null;
    
                    #endregion
    
                    return excelData;
                }
                catch (Exception ex)
                {
                    message = "数据文件或者内容格式有严重错误(" + ex.Message + "),请检查!";
                    return null;
                }
            }
    
      public DataTable ReadEachExcelSheetData2(OleDbConnection excelConnection, string tableName, string columnString)
            {
                DataTable excelData = new DataTable();
                try
                {
                    tableName = "[" + tableName + "]";
                    string sql = "";
    
                    string queryFieldText = string.Empty;
    
    
                    if (string.IsNullOrEmpty(queryFieldText))
                    {
                        queryFieldText = "*";
                    }
                    else
                    {
                        foreach (string column in columnString.Split(','))
                        {
                            queryFieldText += "[" + column + "],";
                        }
                        queryFieldText = queryFieldText.Trim(',');
    
                    }
                    sql = @"
                                    SELECT 
                                            {0}
                                    FROM 
                                            {1}
                                    ";
                    sql = string.Format(sql, queryFieldText, tableName);
    
                    DataSet ds = new DataSet();
                    OleDbDataAdapter myAdp = new OleDbDataAdapter(sql, excelConnection);
                    myAdp.Fill(ds, tableName);
    
                    if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                    {
                        excelData.Merge(ds.Tables[0]);
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
    
                return excelData;
    
            }
  • 相关阅读:
    Memcached安装
    BarCode条形码生成库
    WebAPI示例
    JDK安装目录分析-两个jre和三个lib
    JDK安装与环境变量配置
    【Selenium专题】高亮显示页面元素
    cannot be resolved to a type (Java)
    Java中获取运行代码的类名、方法名
    【Selenium专题】 FAQ_对象识别_Compound class names are not supported
    Html5新标签解释及用法
  • 原文地址:https://www.cnblogs.com/zoro-zero/p/4206483.html
Copyright © 2020-2023  润新知