欢迎使用CSDN-markdown编辑器


导入英语模板
①、获取excel中的多个sheet

#region 获取上传的Excel的所有的sheet名字的集合

        //获取全部Sheet名
        public ArrayList ExcelSheetName(string filepath)
        {

            string strConn;
            strConn = "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" + filepath + ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=2'";
            OleDbConnection conn = new OleDbConnection(strConn);
            conn.Open();
            DataTable dtsheetNames = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
            ArrayList strTableNames = new ArrayList();
            conn.Close();
            for (int k = 0; k < dtsheetNames.Rows.Count; k++)
            {
                strTableNames.Add(dtsheetNames.Rows[k]["TABLE_NAME"].ToString());
            }
            return strTableNames;
        }

        #endregion

②、在字典表中查找sheet对应的英语名称
③、获取待导入的数据库的表名
④、获取题库表的第一条数据,取出对应题型中excel中应该包含的字段

/// <summary>
        /// 获取题库表的第一条数据,为获得表结构--郑浩
        /// </summary>
        /// <param name="strCourseID">课程ID</param>
        /// <param name="CourseType"></param>
        /// <returns></returns>
        public ArrayList GetExcelColumns(string TableName)
        {
            ArrayList strExcelColumns = new ArrayList();//用于保存查询出来的对应题型的需要包含的字段


            try
            {

                DataTable tdQueryType = new DataTable();
                StringBuilder strSql = new StringBuilder();

                strSql.Append("select * from ");
                strSql.Append(TableName + " limit 1");

                tdQueryType = MySQLHelper.ExecuteDataTable(strSql.ToString());//获得第一条数据

                //取出对应题型中excel中应该包含的字段
                for (int i = 0; i < tdQueryType.Columns.Count; i++)
                {
                    //去除表中与excel不对应的字段
                    if ((tdQueryType.Columns[i].ToString()).ToUpper() == "ADDUSER" || (tdQueryType.Columns[i].ToString()).ToUpper() == "REMARK" || (tdQueryType.Columns[i].ToString()).ToUpper() == "TIMESTAMP" || (tdQueryType.Columns[i].ToString()).ToUpper() == "OTHER1")
                    //|| (tdQueryType.Columns[i].ToString()).ToUpper() == "OTHER2"
                    {
                        continue;
                    }
                    strExcelColumns.Add(tdQueryType.Columns[i].ToString());
                }


            }
            catch (System.Exception message)
            {
                throw new Exception("获取Excel中应有字段名失败 " + message.Message);

            }
            return strExcelColumns;
        }

⑤、将获取的英文字段转换为中文字段
⑥、判断上传的excel中是否有多余的列和全部的字段

//判断上传的excel中是否有多余的列
                if (dtCurrent.Columns.Count != headfields.Count)
                {
                    Response.Write("<script>alert('待导入的模板中存在多余的列(空值列),请检查模板格式或重新下载模板!')</script>");
                    return null;
                }

                //判断dtCourse中是否包含全部要求的字段
                for (int j = 0; j < headfields.Count; j++)
                {
                    // //只要有一个字段不被包含,则提示"数据源缺少必要的字段",并退出循环和整个方法
                    if (!dtCurrent.Columns.Contains(headfields[j].ToString()))
                    {
                        string a = headfields[i].ToString();
                        string msg = "数据源缺少必要的字段, " + headfields[j].ToString() + " 请检查数据源!";

                        Response.Write("<script>alert("+ msg + ")</script>");
                        return null;
                    }
                }

                ////判断数据源中是否有数据
                if (dtCurrent.Rows.Count == 0)
                {              
                    Response.Write("<script>alert('Excel文件中没有任何数据,请填充数据!')</script>");
                    //退出方法
                    return null;
                }

你可能感兴趣的:(欢迎使用CSDN-markdown编辑器)