欢迎使用CSDN-markdown编辑器

来源:互联网 发布:win10安装java没反应 编辑:程序博客网 时间:2024/05/29 11:48


导入英语模板
①、获取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;                }
1 0
原创粉丝点击