数据导入(excel读取,存储进数据库【多表】)

QQ:1187362408 欢迎技术交流和学习

数据导入(excel读取,存储进数据库【多表】),业务需求

TODO:

1,选择导入地区

2,数据校验:

(角色类别[1]:一个用户具有多角色     角色类别[2]:多用户单角色) 

3,生成网格用户信息

讲解篇:1,服务端aspx,2,服务端后台3,前端javascript4,webservice返回数据(这里采用一般处理程序:handler.ashx.cs)

服务端aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="BaseInfoList.aspx.cs" Inherits="HMFW.Web.DataImport.BaseInfoList" %>

<%@ Register TagPrefix="uc1" TagName="uc_btnSelectArea" Src="~/UserControl/uc_btnSelectArea.ascx" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>数据导入基础表</title>
    <script src="/Js/jquery-1.7.2.js" type="text/javascript"></script>
    <script src="/Js/jquerytree/jquery.ztree.core-3.1.min.js" type="text/javascript"></script>
    <link href="/Js/jquerytree/zTreeStyle/zTreeStyle.css" rel="stylesheet" type="text/css" />
    <script src="/Js/jquery.easyui.min.js" type="text/javascript"></script>
    <script src="/Js/jquery.form.js" type="text/javascript"></script>
    <script src="/Js/jquery.validate.js" type="text/javascript"></script>
    <link href="/themes/default/easyui.css" rel="stylesheet" type="text/css" />
    <link href="/themes/icon.css" rel="stylesheet" type="text/css" />
    <script src="/Js/jquery-loadmask-0.4/jquery.loadmask.min.js" type="text/javascript"></script>
    <link href="/Js/jquery-loadmask-0.4/jquery.loadmask.css" rel="stylesheet" type="text/css" />
    <link href="/css/width.css" rel="stylesheet" type="text/css" />
    <script src="/Js/list.js" type="text/javascript"></script>
    <script src="/Js/Common.js" type="text/javascript"></script>
    <link href="/css/Common.css" rel="stylesheet" type="text/css" />
    <script src="BaseInfoList.js" type="text/javascript"></script>

    <script type="text/javascript" src="/Js/swfupload/swfupload.js"></script>
    <script type="text/javascript" src="/Js/swfupload/handlers.js"></script>
    <script type="text/javascript">
        var swfu1; var swfu2;
        window.onload = function () {
            swfu1 = new SWFUpload({
                upload_url: "BaseInfoListHandler.ashx?action=fileupload",
                post_params: {
                    "ASPSESSID": "\"" + $("#hidSessionID").val() + "\""
                },
                file_size_limit: "10 MB",
                file_types: "*.xls;*.xlsx",
                file_types_description: "EXCEL文件",
                file_upload_limit: 0,
                swfupload_preload_handler: preLoad,
                swfupload_load_failed_handler: loadFailed,
                file_queue_error_handler: fileQueueError,
                file_dialog_complete_handler: fileDialogComplete,
                upload_progress_handler: uploadProgress,
                upload_error_handler: uploadError,
                upload_success_handler: uploadFileSuccess,
                upload_complete_handler: uploadComplete,
                button_image_url: "/Js/swfupload/XPButtonNoText_160x22.png",
                button_placeholder_id: "spanButtonPlaceholder1",
                button_width: 66,
                button_height: 22,
                button_text: '<span class="button">   </span>',
                button_text_style: '.button { font-family: Helvetica, Arial, sans-serif; font-size: 14pt;} .buttonSmall { font-size: 10pt; }',
                button_text_top_padding: 1,
                button_text_left_padding: 5,
                flash_url: "/Js/swfupload/swfupload.swf", // Relative to this file
                flash9_url: "/Js/swfupload/swfupload_FP9.swf", // Relative to this file
                custom_settings: {
                    upload_target: "divFileProgressContainer"
                },
                debug: false
            });

            swfu2 = new SWFUpload({
                upload_url: "PeopleInfoListHandler.ashx?action=fileupload",
                post_params: {
                    "ASPSESSID": "\"" + $("#hidSessionID").val() + "\""
                },
                file_size_limit: "10 MB",
                file_types: "*.xls;*.xlsx",
                file_types_description: "EXCEL文件",
                file_upload_limit: 0,
                swfupload_preload_handler: preLoad,
                swfupload_load_failed_handler: loadFailed,
                file_queue_error_handler: fileQueueError,
                file_dialog_complete_handler: fileDialogComplete,
                upload_progress_handler: uploadProgress,
                upload_error_handler: uploadError,
                upload_success_handler: uploadFileSuccess,
                upload_complete_handler: uploadComplete,
                button_image_url: "/Js/swfupload/XPButtonNoText_160x22.png",
                button_placeholder_id: "spanButtonPlaceholder2",
                button_width: 66,
                button_height: 22,
                button_text: '<span class="button">   </span>',
                button_text_style: '.button { font-family: Helvetica, Arial, sans-serif; font-size: 14pt;} .buttonSmall { font-size: 10pt; }',
                button_text_top_padding: 1,
                button_text_left_padding: 5,
                flash_url: "/Js/swfupload/swfupload.swf", // Relative to this file
                flash9_url: "/Js/swfupload/swfupload_FP9.swf", // Relative to this file
                custom_settings: {
                    upload_target: "divFileProgressContainer"
                },
                debug: false
            });
        }

        $(function () {
            divHeight();//设置错误提示信息的Div的高度
        });

        ///设置错误提示信息的Div的高度
        function divHeight() {
            var iHeight = $(this).height() - $("#div_action").height() - 20;
            $("#divError").height(iHeight);
        }
    </script>

</head>
<body>
    <form id="form1" οnresize="divHeight();" runat="server">
        <div id="div_action" style="margin: 10px 0 0 0;">
            <table width="100%" border="0" cellspacing="0" class="findk">
                <tbody>
                    <tr align="left">
                        <td align="right">模板下载:</td>
                        <td colspan="2"><a runat="server" id="WGdownload" style="text-decoration: none"><span style="font-weight: bolder; font-size: larger; color: red; margin-left: 10px;">社区网格信息模板下载</span></a></td>
                        <td class="d_hid"><a runat="server" id="RKdownload" style="text-decoration: none"><span style="font-weight: bolder; font-size: larger; color: red; margin-left: 10px;">社区人口信息模板下载</span></a></td>
                        <td><span style="font-weight: bolder; font-size: larger; color: red; margin-left: 10px;">门牌号显示图:格式【<label id="labMPH">ABc</label>】</span><%--<a runat="server" id="ZDdownload"><span class="xiazai"></span>字典对照表下载</a>--%></td>
                    </tr>
                    <tr align="left">
                        <td align="right" style="width: 12%">第一步:</td>
                        <td align="left" style="width: 13%">选择导入地区</td>
                        <td style="width: 18%"></td>
                        <td rowspan="3">
                            <asp:Image ID="imgMPH" runat="server" ImageUrl="../../Images/MPH/1ABc.jpg" />
                        </td>
                    </tr>
                    <tr>
                        <td></td>
                        <td align="right">
                            <div class="divnr-auto">
                                地区:
                            </div>
                        </td>
                        <td align="left">
                            <uc1:uc_btnSelectArea ID="uc_btnSelectArea1" runat="server" SetSearchFunction="VillageContrlo()" ShowClearBtn="true" Width="153"
                                CanSelParent="True" />
                        </td>
                    </tr>
                    <tr>
                        <td align="right">第二步:</td>
                        <td align="left">导入基础信息数据</td>
                        <td></td>
                    </tr>
                    <tr>
                        <td></td>
                        <td align="right" nowrap>
                            <font color="red">*</font>文件上传(社区网格信息):
                        </td>
                        <td align="left" nowrap style="height: 50px">
                            <div style="float: left; width: 130px;">
                                <asp:TextBox ID="txtimg1" ContentEditable="false" runat="server" class="srk001"></asp:TextBox>
                            </div>
                            <div id="divUpLoad1" style="float: left; width: 66px; z-index: -1; margin-top: 1px">
                                <span id="spanButtonPlaceholder1"></span>
                            </div>
                            <br />
                            <input type="hidden" id="FieldUrl1" runat="server" />
                        </td>
                        <td align="left" width="10%" nowrap height="20">
                            <div style="float: left; width: 50px;">
                                <xhm:xhmButtionEasyUI ID="btn_Import1" runat="server" IconTypeSelected="save" OnClientClick="Import1();return false;">文件上传</xhm:xhmButtionEasyUI>
                            </div>
                            <div id="divWGUserMes" style="float: right; color: red; font-size: 13px; line-height: 18px; font-weight: 600;">
                                提示:生成的网格用户请到【内网系统管理】--【用户管理】--【用户列表】<br />
                                菜单里查看,所有用户初始密码为123,请及时修改密码!!!
                            </div>
                        </td>
                    </tr>
                    <tr>
                        <td></td>
                        <td></td>
                        <td>
                            <div id="divMes" style="float: left; color: red; font-size: 13px; font-weight: 600; padding-top: 2px">
                            </div>
                        </td>
                        <td colspan="3">
                            <div class="datagrid-toolbar">
                                <table>
                                    <tr>
                                        <td>  门牌号格式:<select id="ddl_sFormat" runat="server" class="xlk001">
                                            <option value="ABc">ABc</option>
                                            <option value="ABC">ABC</option>
                                            <option value="BCC">BCC</option>
                                            <option value="A-Bcc">A-Bcc</option>
                                            <option value="A-BCC">A-BCC</option>
                                            <option value="A-B-C">A-B-C</option>
                                            <option value="A-B-c">A-B-c</option>
                                        </select></td>
                                        <td>
                                            <xhm:xhmLinkButtionEasyUI ID="btnValidate1" runat="server" Enabled="false" IconTypeSelected="dc"
                                                OnClientClick="return DataValidate1();">数据校验</xhm:xhmLinkButtionEasyUI>
                                        </td>
                                        <td>
                                            <xhm:xhmLinkButtionEasyUI ID="btnInsertData1" runat="server" Enabled="false" IconTypeSelected="dc"
                                                OnClientClick="return ValidateBuild();">生成基础信息</xhm:xhmLinkButtionEasyUI>
                                        </td>
                                        <td>
                                            <xhm:xhmLinkButtionEasyUI ID="btnCreateWGUser" runat="server" Enabled="false" IconTypeSelected="dc"
                                                OnClientClick="return IntelligentWGUser();">生成网格用户信息</xhm:xhmLinkButtionEasyUI>
                                        </td>
                                    </tr>
                                </table>
                            </div>
                        </td>
                    </tr>
                    <tr class="d_hid">
                        <td align="right">第三步:</td>
                        <td align="left">导入人口信息数据</td>
                        <td></td>
                        <td></td>
                    </tr>
                    <tr class="d_hid">
                        <td></td>
                        <td align="right" nowrap>
                            <font color="red">*</font>文件上传(社区人口信息):
                        </td>
                        <td align="left" nowrap style="height: 50px">
                            <div style="float: left; width: 130px;">
                                <asp:TextBox ID="txtimg2" ContentEditable="false" runat="server" class="srk001"></asp:TextBox>
                            </div>
                            <div id="divUpLoad2" style="float: left; width: 66px; display: none; z-index: -1; margin-top: 1px">
                                <span id="spanButtonPlaceholder2"></span>
                            </div>
                            <br />
                            <%--<div style="float: left; padding-top: 2px">
                                <font color="red">(文件不得超过10M)</font>
                            </div>--%>
                            <input type="hidden" id="FieldUrl2" runat="server" />
                        </td>
                        <td align="left" width="10%" nowrap height="20">
                            <xhm:xhmButtionEasyUI ID="btn_Import2" runat="server" IconTypeSelected="save" OnClientClick="Import2();return false;">文件上传</xhm:xhmButtionEasyUI>
                        </td>
                    </tr>
                    <tr class="d_hid">
                        <td></td>
                        <td></td>
                        <td></td>
                        <td colspan="3">
                            <div class="datagrid-toolbar">
                                <table>
                                    <tr>
                                        <td>
                                            <xhm:xhmLinkButtionEasyUI ID="btnValidate2" runat="server" Enabled="false" IconTypeSelected="dc"
                                                OnClientClick="DataValidate2();return false;">数据校验</xhm:xhmLinkButtionEasyUI>
                                        </td>
                                        <td>
                                            <xhm:xhmLinkButtionEasyUI ID="btnInsertData2" runat="server" Enabled="false" IconTypeSelected="dc"
                                                OnClientClick="IntelligentImPort2();return false;">生成家庭人口信息</xhm:xhmLinkButtionEasyUI></td>
                                    </tr>
                                </table>
                            </div>
                        </td>
                    </tr>
                </tbody>
            </table>
        </div>
        <div id="divError" style="font-size: 16px; overflow: auto;" class="error"></div>
        <input type="hidden" runat="server" id="hidRandomID" />
         <input type="hidden" runat="server" id="hidMph" />
    </form>
</body>
</html>

服务端后台

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace HMFW.Web.DataImport
{
    public partial class BaseInfoList : BasePage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                hidRandomID.Value = Guid.NewGuid().ToString();//页面导入数据标识,Guid
            }
            string action = GetParam("action");
            if (!IsPostBack && string.IsNullOrEmpty(action))
            {
                //XX社区实有人口信息采集模板
                string RKfilePath = Server.UrlEncode(Server.MapPath("/DocTemplate/社区人口信息采集模板.xls"));
                string RKresult = "BaseInfoList.aspx?action=xiazai&filepath=" + RKfilePath + "&filename=" + Server.UrlEncode("社区人口信息采集模板.xls");
                RKdownload.HRef = RKresult;
                //XX社区网格基础信息采集模板
                string WGfilePath = Server.UrlEncode(Server.MapPath("/DocTemplate/社区网格信息采集模板.xls"));
                string WGresult = "BaseInfoList.aspx?action=xiazai&filepath=" + WGfilePath + "&filename=" + Server.UrlEncode("社区网格信息采集模板.xls");
                WGdownload.HRef = WGresult;
                字典表
                //string ZDfilePath = Server.UrlEncode(Server.MapPath("/DocTemplate/字典对照表.xls"));
                //string ZDresult = "BaseInfoList.aspx?action=xiazai&filepath=" + ZDfilePath + "&filename=" + Server.UrlEncode("字典对照表.xls");
                //ZDdownload.HRef = ZDresult;
            }
            if (!string.IsNullOrEmpty(action))
                Download();
        }

        /// <summary>
        /// 下载事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Download()
        {
            //客户端保存的文件名
            string filePath = GetParam("filepath");
            string fileName = GetParam("filename");
            if (!System.IO.File.Exists((filePath)))
            {
                Message("文件不存在!");
                return;
            }
            //以字符流的形式下载文件
            FileStream fs = new FileStream((filePath), FileMode.Open);
            if (fs.Length > 0)
            {
                byte[] bytes = new byte[(int)fs.Length];
                fs.Read(bytes, 0, bytes.Length);
                fs.Close();
                Response.ContentType = "application/octet-stream";
                //通知浏览器下载文件而不是打开
                Response.AddHeader("Content-Disposition", "attachment;  filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
                Response.BinaryWrite(bytes);
                Response.Flush();
                Response.End();
            }
            else
            {
                Message("指定文件内容为空!");
            }
        }

    }
}

前端javascript

var handleurl1 = "BaseInfoListHandler.ashx"; //一般处理程序路径
var handleurl2 = "PeopleInfoListHandler.ashx"; //一般处理程序路径
var sVillageCode = "";//选择的地区编码
var sVillageName = "";//选择的地区名称
var sRandomID = "";//页面导入数据标识,Guid

$(function () {
    $("#btn_Import2,#btnValidate1,#btnInsertData1,#btnCreateWGUser").attr("disabled", "disabled");
    ///谷歌下Button禁用没用,以下方法针对无用的浏览器
    $("#btn_Import2,#btnValidate1,#btnInsertData1,#btnCreateWGUser").css("color", "gray").removeAttr("onclick");

    sRandomID = $("#hidRandomID").val();//页面导入数据标识,Guid

    sVillageCode = $("#uc_btnSelectArea1_hidAreaCode").val();//选择的地区编码
    ///如果是社区,判断这个社区是否已导入基础数据,如已导入,进行控制不允许重复导入
    if (sVillageCode.length == 12) {
        ///基础数据已导入,不允许重复导入
        if (ExistData(sVillageCode) == true) {
            $("#uc_btnSelectArea1_txtAreaName").attr("disabled", "disabled");//之后生成数据,地区不可变动 
            $("#uc_btnSelectArea1_imgselect,#uc_btnSelectArea1_imgclear").hide();//控制地区控件不可选
            $("#btn_Import1,#btnValidate1,#btnInsertData1,#txtimg1,#ddl_sFormat").attr("disabled", "disabled");
            $("#divUpLoad1").hide();
            $("#divUpLoad2").show();
            $("#btn_Import2").removeAttr("disabled");
            $("#divMes").html("基础数据已导入!");//请直接导入人口信息!");

            //if (ExistWGUser(sVillageCode) == true) {//验证网格用户是否已生成
            //    $("#btnCreateWGUser").attr("disabled", "disabled");//生成网格用户按钮不可用
            //    //去用户管理查看已生成的网格用户
            //    $("#divWGUserMes").html("提示:生成的网格用户请到【内网系统管理】--【用户管理】--【用户列表】<br/>菜单里查看,所有用户初始密码为123,请及时修改密码!!!");
            //}
            return false;
        }
    }
    if (sVillageCode.length == 12) {
        VillageContrlo();
    }

    $("#ddl_sFormat").change(function () {
        setMph(this.value);
    });
});

function setMph(value) {
    $("#labMPH").text(value);
    var iIndex = $("#ddl_sFormat option:selected").index();
    $("#imgMPH").attr("src", "../../Images/MPH/" + Number(iIndex + 1) + value + ".jpg");
}

///如果是社区,判断这个社区是否已导入基础数据,如已导入,进行控制不允许重复导入
function VillageContrlo() {
    sVillageCode = $("#uc_btnSelectArea1_hidAreaCode").val();//选择的地区编码
    if (sVillageCode.length == 12) {
        ///基础数据已导入,不允许重复导入
        if (ExistData(sVillageCode) == true) {
            $("#btn_Import1,#btnValidate1,#btnInsertData1,#txtimg1,#ddl_sFormat").attr("disabled", "disabled");
            $("#divUpLoad1").hide();
            $("#divUpLoad2").show();
            $("#btn_Import2").removeAttr("disabled");
            $("#divMes").html("基础数据已导入!");//请直接导入人口信息!");
            var value = $("#hidMph").val();
            $("#ddl_sFormat").val(value);
            setMph(value);
            //if (ExistWGUser(sVillageCode) == true) {//验证网格用户是否已生成
            //    $("#btnCreateWGUser").attr("disabled", "disabled");//生成网格用户按钮不可用
            //    //去用户管理查看已生成的网格用户
            //    $("#divWGUserMes").html("提示:生成的网格用户请到【内网系统管理】--【用户管理】--【用户列表】<br/>菜单里查看,所有用户初始密码为123,请及时修改密码!!!");
            //}
            return false;
        } else {
            $("#btn_Import1,#txtimg1,#ddl_sFormat").removeAttr("disabled");
            $("#divUpLoad1").show();
            $("#divUpLoad2").hide();
            $("#btn_Import2").attr("disabled", "disabled");
            $("#divMes").html("");
            $("#ddl_sFormat").val("ABc");
            setMph("ABc");
            return false;
        }
    }
}

///确定导入----基础信息
function Import1() {
    sVillageCode = $("#uc_btnSelectArea1_hidAreaCode").val();//选择的地区编码
    sVillageName = $("#uc_btnSelectArea1_txtAreaName").val();//选择的地区名称

    if ($.trim(sVillageCode).length != 12) {//判断地区是否选择到社区
        $.messager.alert('信息', "地区请选择到社区!", 'info');
        return false;
    }
    ///判断基础数据是否已导入,已导入,不允许重复导入
    if (ExistData(sVillageCode) == true) {
        $.messager.alert('信息', sVillageName + "已导入基础数据,不能重复导入!如需重新导入,请联系管理员进行删除数据!", 'info');
        return false;
    }

    if ($("#txtimg1").val() == "") {//判断是否上传了文件
        $.messager.alert('信息', "请选择上传文件!", 'info');
        return false;
    }

    var data = "action=inexport&filePath=" + $("#FieldUrl1").val() + "&sVillageCode=" + sVillageCode + "&sVillageName=" + sVillageName + "&sRandomID=" + sRandomID;
    $.ajax({
        type: "POST",
        url: handleurl1,
        data: data,
        dataType: "json",
        error: function (xmlHttpRequest) {
            $.messager.alert('错误', xmlHttpRequest.responseText, 'error');
        },
        success: function (returnJsonValue) {
            if (returnJsonValue.result == true) {
                $.messager.alert('信息', returnJsonValue.data, 'info'); //弹出消息
                $("#btnValidate1").removeAttr("disabled").css("color", "").attr("onclick", "return DataValidate1();");//数据验证按钮可用
                $("#uc_btnSelectArea1_txtAreaName").attr("disabled", "disabled");//之后生成数据,地区不可变动 
                $("#uc_btnSelectArea1_imgselect,#uc_btnSelectArea1_imgclear").hide();//控制地区控件不可选
                $("#divError").empty();//清空错误结果提示信息【针对重新导入,之前导入错误的】
            }
            else {
                $.messager.alert('信息', "数据校验失败!详细信息请查看校验结果!", 'info'); //弹出消息
                $("#divError").empty().html(returnJsonValue.data);//.show();
                $("#btnInsertData1,#btnCreateWGUser").attr("disabled", "disabled");//生成基础信息按钮不可用
                ///谷歌下Button禁用没用,以下方法针对无用的浏览器
                $("#btnInsertData1,#btnCreateWGUser").css("color", "gray").removeAttr("onclick");
            }
            $("#btnValidate2").attr("disabled", "disabled");//数据验证按钮不可用
            $("#btnInsertData2").attr("disabled", "disabled");//生成家庭人口信息按钮不可用
        },
        beforeSend: function () {
            $("body").mask("数据处理中,请稍候...");
        },
        complete: function () {
            $("body").unmask();
        }
    });
    return false;
}

///是否已存在数据,导入基础数据之前验证当时社区的基础数据是否已导入,存在 true  不存在 false
function ExistData(sVillageCode) {
    var result = false;
    var data = "action=existdata&sVillageCode=" + sVillageCode;
    $.ajax({
        type: "POST",
        url: handleurl1,
        data: data,
        async: false,
        dataType: "json",
        error: function (xmlHttpRequest) {
            $.messager.alert('错误', "Error:" + xmlHttpRequest.responseText, 'error');
        },
        success: function (returnJsonValue) {
            result = returnJsonValue.result;
            $("#hidMph").val(returnJsonValue.ID);
        }
    });
    return result;
}

///是否已存在数据,导入基础数据之前验证当时社区的基础数据是否已导入,存在 true  不存在 false
function ExistWGUser(sVillageCode) {
    var result = false;
    var data = "action=existwguser&sVillageCode=" + sVillageCode;
    $.ajax({
        type: "POST",
        url: handleurl1,
        data: data,
        async: false,
        dataType: "json",
        error: function (xmlHttpRequest) {
            $.messager.alert('错误', "Error:" + xmlHttpRequest.responseText, 'error');
        },
        success: function (returnJsonValue) {
            result = returnJsonValue.result;
        }
    });
    return result;
}

///数据校验----基础信息
function DataValidate1() {
    var data = "action=datavalidate&sVillageCode=" + sVillageCode + "&sVillageName=" + sVillageName + "&sRandomID=" + sRandomID;
    $.ajax({
        type: "POST",
        url: handleurl1,
        data: data,
        async: false,
        dataType: "json",
        error: function (xmlHttpRequest) {
            $.messager.alert('错误', "Error:" + xmlHttpRequest.responseText, 'error');
            $("#divError").empty().html(xmlHttpRequest.responseText);//.show();
        },
        success: function (returnJsonValue) {
            if (returnJsonValue.result == true) {
                $.messager.alert('信息', returnJsonValue.data, 'info'); //弹出消息
                $("#btnInsertData1").removeAttr("disabled").css("color", "").attr("onclick", "return ValidateBuild();");;//生成基础数据按钮可用  

                $("#divError").empty();//清空错误结果提示信息
            }
            else {
                $.messager.alert('信息', "数据校验失败!详细信息请查看校验结果!", 'info'); //弹出消息
                $("#divError").empty().html(returnJsonValue.data);//.show();
                $("#btnInsertData1,#btnCreateWGUser").attr("disabled", "disabled");//生成基础信息按钮不可用
                ///谷歌下Button禁用没用,以下方法针对无用的浏览器
                $("#btnInsertData1,#btnCreateWGUser").css("color", "gray").removeAttr("onclick");
            }
        },
        beforeSend: function () {
            $("body").mask("数据处理中,请稍候...");
        },
        complete: function () {
            $("body").unmask();
        }
    });
    return false;
}

///验证楼层是否有大于33层的,大于33层进行信息提示,是否确定生成基础信息
function ValidateBuild() {
    var result = true;
    var data = "action=validatebuild&sVillageCode=" + sVillageCode;
    $.ajax({
        type: "POST",
        url: handleurl1,
        data: data,
        async: false,
        dataType: "json",
        error: function (xmlHttpRequest) {
            $.messager.alert('错误', "Error:" + xmlHttpRequest.responseText, 'error');
        },
        success: function (returnJsonValue) {
            if (returnJsonValue.result == true) {
                IntelligentImPort1();
            }
            else {
                var strMes = returnJsonValue.data;
                $.messager.confirm('数据提示', '<div style="margin-top:0px;line-height:22px">' + strMes, function (data) {
                    if (data) {
                        IntelligentImPort1();
                    }
                });
            }
        }
    });
    return result;
}


///一键导入网格小区楼栋并生成房屋----基础信息
function IntelligentImPort1() {
    ///判断基础数据是否已导入,已导入,不允许重复导入
    if (ExistData(sVillageCode) == true) {
        $.messager.alert('信息', sVillageName + "已导入基础数据,不能重复导入!如需重新导入,请联系管理员进行删除数据!", 'info');
        return false;
    }
    var sFormat = $("#ddl_sFormat").val();
    var data = "action=intelligentimport&sVillageCode=" + sVillageCode + "&sVillageName=" + sVillageName + "&sFormat=" + sFormat + "&sRandomID=" + sRandomID;
    $.ajax({
        type: "POST",
        url: handleurl1,
        data: data,
        dataType: "json",
        async: false,
        error: function (xmlHttpRequest) {
            $.messager.alert('错误', xmlHttpRequest.responseText, 'error');
        },
        success: function (returnJsonValue) {
            $.messager.alert('信息', returnJsonValue.data, 'info'); //弹出消息
            if (returnJsonValue.result == true) {
                $("#btn_Import1,#btnValidate1,#btnInsertData1,#txtimg1,#ddl_sFormat").attr("disabled", "disabled");
                $("#divUpLoad1").hide();
                $("#divUpLoad2").show();
                $("#btn_Import2").removeAttr("disabled");
                $("#btnCreateWGUser").removeAttr("disabled").css("color", "").attr("onclick", "return IntelligentWGUser();");;//生成网格用户信息
            }
        },
        beforeSend: function () {
            $("body").mask("数据处理中,请稍候...");
        },
        complete: function () {
            $("body").unmask();
        }
    });
    return false;
}

///一键生成网格用户信息:默认密码 123
function IntelligentWGUser() {
    var data = "action=intelligentwguser&sVillageCode=" + sVillageCode + "&sVillageName=" + sVillageName + "&sRandomID=" + sRandomID;
    $.ajax({
        type: "POST",
        url: handleurl1,
        data: data,
        dataType: "json",
        async: false,
        error: function (xmlHttpRequest) {
            $.messager.alert('错误', xmlHttpRequest.responseText, 'error');
        },
        success: function (returnJsonValue) {
            $.messager.alert('信息', returnJsonValue.data, 'info'); //弹出消息
            if (returnJsonValue.result == true) {
                $("#btn_Import1,#btnValidate1,#btnInsertData1,#txtimg1,#ddl_sFormat,#btnCreateWGUser").attr("disabled", "disabled");
                $("#divUpLoad1").hide();
                $("#divUpLoad2").show();
                $("#btn_Import2").removeAttr("disabled");

                Add_2("/Pages/UserRoleManage/UserList.aspx", "sVillageCode=" + sVillageCode + "&sVillageName=" + sVillageName + "&iUserType=2", 600, 600, false);//跳转用户管理界面
            }
        },
        beforeSend: function () {
            $("body").mask("数据处理中,请稍候...");
        },
        complete: function () {
            $("body").unmask();
        }
    });
    return false;
}

///确定导入----人口信息 
function Import2() {
    sVillageCode = $("#uc_btnSelectArea1_hidAreaCode").val();//选择的地区编码
    sVillageName = $("#uc_btnSelectArea1_txtAreaName").val();//选择的地区名称

    if ($("#txtimg2").val() == "") {//判断是否上传了文件
        $.messager.alert('信息', "请上传文件!", 'info');
        return false;
    }
    var data = "action=inexport&filePath=" + $("#FieldUrl2").val() + "&sRandomID=" + sRandomID + "&sVillageCode=" + sVillageCode + "&sVillageName=" + sVillageName;
    $.ajax({
        type: "POST",
        url: handleurl2,
        data: data,
        dataType: "json",
        error: function (xmlHttpRequest) {
            $.messager.alert('错误', xmlHttpRequest.responseText, 'error');
        },
        success: function (returnJsonValue) {
            if (returnJsonValue.result == true) {
                $.messager.alert('信息', returnJsonValue.data, 'info'); //弹出消息
                $("#btnValidate2").removeAttr("disabled");//数据验证按钮可用
                $("#divError").empty();//清空错误结果提示信息
            }
            else {
                $.messager.alert('信息', "数据校验失败!详细信息请查看校验结果!", 'info'); //弹出消息
                $("#divError").empty().html(returnJsonValue.data);//.show();
                $("#btnInsertData2").attr("disabled", "disabled");//生成家庭人口信息按钮不可用
            }
        },
        beforeSend: function () {
            $("body").mask("数据处理中,请稍候...");
        },
        complete: function () {
            $("body").unmask();
        }
    });
    return false;
}

///数据校验----人口信息 
function DataValidate2() {
    var data = "action=datavalidate&sVillageCode=" + sVillageCode + "&sVillageName=" + sVillageName + "&sRandomID=" + sRandomID;
    $.ajax({
        type: "POST",
        url: handleurl2,
        data: data,
        dataType: "json",
        error: function (xmlHttpRequest) {
            $.messager.alert('错误', "Error:数据校验失败!详细信息请查看校验结果!", 'error');
            $("#divError").empty().html(xmlHttpRequest.responseText);//.show();
        },
        success: function (returnJsonValue) {
            if (returnJsonValue.result == true) {
                $.messager.alert('信息', returnJsonValue.data, 'info'); //弹出消息
                $("#btnInsertData2").removeAttr("disabled");//生成家庭人口信息按钮可用
                $("#divError").empty();//清空错误结果提示信息
            }
            else {
                $.messager.alert('信息', "数据校验失败!详细信息请查看校验结果!", 'info'); //弹出消息
                $("#divError").empty().html(returnJsonValue.data);//.show();
                $("#btnInsertData2").attr("disabled", "disabled");//生成家庭人口信息按钮不可用
            }
        },
        beforeSend: function () {
            $("body").mask("数据处理中,请稍候...");
        },
        complete: function () {
            $("body").unmask();
        }
    });
    return false;
}

///导入家庭、人口信息
function IntelligentImPort2() {
    var data = "action=intelligentimport&sVillageCode=" + sVillageCode + "&sVillageName=" + sVillageName + "&sRandomID=" + sRandomID;
    $.ajax({
        type: "POST",
        url: handleurl2,
        data: data,
        dataType: "json",
        error: function (xmlHttpRequest) {
            $.messager.alert('错误', xmlHttpRequest.responseText, 'error');
        },
        success: function (returnJsonValue) {
            $.messager.alert('信息', returnJsonValue.data, 'info'); //弹出消息
            $("#btnValidate2").attr("disabled", "disabled");//数据验证按钮不可用
            $("#btnInsertData2").attr("disabled", "disabled");//生成家庭人口信息按钮不可用
        },
        beforeSend: function () {
            $("body").mask("数据处理中,请稍候...");
        },
        complete: function () {
            $("body").unmask();
        }
    });
    return false;
}

webservice返回数据(这里采用一般处理程序:handler.ashx.cs)

BaseInfoListHandler

using HMFW.BLL.UserRoleManage;
using HMFW.Common;
using HMFW.Model;
using HMFW.SQLServerDAL;
using HMFW.Web.App_Code;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.IO;
using System.Linq;
using System.Text;
using System.Web;

namespace HMFW.Web.DataImport
{
    /// <summary>
    /// BaseInfoListHandler 的摘要说明
    /// </summary>
    public class BaseInfoListHandler : BaseHandler
    {
        UsersBLL userBll = new UsersBLL();
        protected override void ActionHandler(string action)
        {
            switch (action.ToLower())
            {
                case "fileupload"://上传社区导入数据
                    UploadFile();
                    break;
                case "existdata"://验证基础数据是否已导入
                    ExistData();
                    break;
                case "inexport"://读取Excel并插入数据到临时表
                    ReadExcel();
                    break;
                case "datavalidate"://数据校验
                    DataValidate();
                    break;
                case "validatebuild"://验证楼层
                    ValidateBuild();
                    break;
                case "intelligentimport"://一键导入网格小区楼栋
                    IntelligentImPort();
                    break;
                case "existwguser"://验证网格用户是否已导入
                    ExistWGUser();
                    break;
                case "intelligentwguser"://一键生成网格用户信息
                    IntelligentWGUser();
                    break;
                default:
                    break;
            }
        }

        #region 文件上传
        /// <summary>
        /// 文件上传
        /// </summary>
        private void UploadFile()
        {
            string pathPrefix = "/upload/DataImport/BaseInfo/";
            try
            {
                HttpPostedFile file = _context.Request.Files["Filedata"];
                if (file == null || file.ContentLength == 0)
                    throw new ArgumentOutOfRangeException("没有文件需要上传或文件过小!");
                if (file.ContentLength > 10000000)
                    throw new ArgumentOutOfRangeException(string.Format("所上传的文件大小{0}字节超过指定大小{1}字节!", file.ContentLength, 10000000));

                string[] strings = file.FileName.Split('.');
                string path = Path.Combine(pathPrefix,
                                           DateTime.Now.ToString("yyyyMMddHHmmss") + DateTime.Now.Millisecond + "." +
                                           strings[strings.Length - 1]);
                string sbst;
                try
                {
                    sbst = HttpContext.Current.Server.MapPath(path);
                }
                catch
                {
                    sbst = path;
                }
                FileInfo fileInfo = new FileInfo(sbst);
                if (!fileInfo.Directory.Exists)
                    fileInfo.Directory.Create();
                file.SaveAs(sbst);
                _context.Response.StatusCode = 200;
                _context.Response.Write(path);
            }
            catch
            {
                // If any kind of error occurs return a 500 Internal Server error
                _context.Response.StatusCode = 500;
                _context.Response.Write("An error occured");
                _context.Response.End();
            }
            finally
            {
                _context.Response.End();
            }
        }
        #endregion

        #region 验证基础数据是否已导入
        /// <summary>
        /// 验证基础数据是否已导入
        /// </summary>
        private void ExistData()
        {
            bool bResult = false;
            string sMes = "验证成功!";
            string mph = "ABc";
            string sVillageCode = GetParam("sVillageCode");
            string sVillageName = GetParam("sVillageName");
            string strDelSQL = "select * from _SQ_DataImportLog where sVillageCode='" + sVillageCode + "' and iType=1";
            DataTable dtBaseData = SqlHelper.ExecuteSqlToTable(strDelSQL);
            if (dtBaseData.Rows.Count > 0)
            {
                bResult = true;
                sMes = "基础数据已导入,不允许重复导入!";
                mph = dtBaseData.Rows[0]["sFormat"].ToString();
            }
            OutputResultCarryID(bResult, sMes, mph);
        }
        #endregion

        #region 验证网格用户是否已生成
        /// <summary>
        /// 验证网格用户是否已生成
        /// </summary>
        private void ExistWGUser()
        {
            bool bResult = false;
            string sMes = "验证成功!";
            string sVillageCode = GetParam("sVillageCode");
            string sVillageName = GetParam("sVillageName");
            string strDelSQL = "select * from _SQ_DataImportLog where sVillageCode='" + sVillageCode + "' and iType=3";
            DataTable dtBaseData = SqlHelper.ExecuteSqlToTable(strDelSQL);
            if (dtBaseData.Rows.Count > 0)
            {
                bResult = true;
                //sMes = "网格用户已生成,不允许重复生成!";
            }
            OutputResult(bResult, sMes);
        }
        #endregion

        #region Excel数据导入数据库
        /// <summary>
        /// Excel数据导入数据库
        /// </summary>
        private void ReadExcel()
        {
            string sVillageCode = GetParam("sVillageCode");
            string sVillageName = GetParam("sVillageName");
            string sFileName = GetParam("filePath");
            string sRandomID = GetParam("sRandomID");//页面导入数据标识,Guid

            string connStr = "";
            string fileType = System.IO.Path.GetExtension(sFileName);
            if (string.IsNullOrEmpty(fileType))
            {
                Output("请选择需要导入的文件!");
            }
            sFileName = _context.Server.MapPath(sFileName);
            if (fileType == ".xls")
                connStr = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + sFileName + ";" + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\"";
            else
                connStr = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + sFileName + ";" + ";Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\"";
            string sql_F = "Select * FROM [{0}]";

            DataTable dtResult = new DataTable();
            OleDbConnection conn = null;
            OleDbDataAdapter da = null;
            DataTable dtSheetName = null;
            bool resul = true;
            string Mes = "上传成功!";
            //bool bWGUpdate = true;//网格编码更新
            //bool bHomeBuildUpdate = true;//小区楼栋更新

            try
            {
                // 初始化连接,并打开
                conn = new OleDbConnection(connStr);
                conn.Open();
                // 获取数据源的表定义元数据                        
                string SheetName = "";
                dtSheetName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
                // 初始化适配器
                da = new OleDbDataAdapter();
                //SheetName = (string)dtSheetName.Rows[0]["TABLE_NAME"];
                for (int i = 0; i < dtSheetName.Rows.Count; i++)
                {
                    SheetName += dtSheetName.Rows[i]["TABLE_NAME"].ToString();
                }

                if (SheetName.Contains("社区网格信息$"))
                {
                    da.SelectCommand = new OleDbCommand(String.Format(sql_F, "社区网格信息$"), conn);
                    da.Fill(dtResult);
                    removeEmpty(dtResult);//去除DataTable空行

                    string errMes = "";
                    if (!CheckRule(dtResult, out errMes, sVillageName))
                    {
                        resul = false;
                        Mes = errMes;
                    }
                    else
                    {
                        string strDelSQL = "delete from _SQ_Excel_BaseInfo where 地区编码='" + sVillageCode + "'";
                        SqlHelper.ExecuteSql(strDelSQL);
                        foreach (DataRow r in dtResult.Rows)
                        {
                            if (!string.IsNullOrEmpty(r[0].ToString().Trim()) && r[0].ToString() != "序号")
                            {
                                if (!(r[0].ToString().Contains("说明") || r[0].ToString().Contains("必填项") || r[0].ToString().Contains("规则") || r[0].ToString().Contains("例如") || r[0].ToString().Contains("导入")))
                                {
                                    string strSQL = "insert into _SQ_Excel_BaseInfo(楼栋主键,地区名称,地区编码,序号,社区名称,网格名称,小区名称,楼栋名称,总层数,负层数,单元数,每单元每层户数,单元户数,不生成的门牌号,商品房,车库,备注,sRandomID)values(NEWID(),'" +
                                                     sVillageName + "','" + sVillageCode + "','" + r[0] + "','" + r[1] + "','" + r[2] + "','" + r[3] + "','" + r[4] + "','" + r[5] + "','" + r[6] + "','" + r[7] + "','" + r[8] + "','" + r[9] + "','" + r[10] + "','" + r[11] + "','" + r[12] + "','" + r[13] + "','" + sRandomID + "')";
                                    SqlHelper.ExecuteSql(strSQL);
                                }
                            }
                        }
                        SqlParameter[] paraList = new SqlParameter[]{
                                     new SqlParameter("@sAreaCode",sVillageCode)
                        };
                        SqlHelper.ExecuteStoredProcedure("proc_StripBaseInfoSpaces", paraList);
                    }
                }
                else
                {
                    resul = false;
                    Mes = "导入失败!Excel中不包含名称为“社区网格信息”的工作薄!";
                }
            }
            catch (Exception ex)
            {
                resul = false;
                Mes = "导入失败!请联系管理员!";
            }
            finally
            {
                // 关闭连接
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                    da.Dispose();
                    conn.Dispose();
                }
            }
            OutputResult(resul, Mes);
        }

        #endregion

        #region 数据校验
        /// <summary>
        /// 数据校验
        /// </summary>
        private void DataValidate()
        {
            bool bCheckResult = true;
            string mes = "";
            string sVillageCode = GetParam("sVillageCode");//地区控件选择的导入数据的地区---编码
            string sVillageName = GetParam("sVillageName");//地区控件选择的导入数据的地区---名称
            //string sRandomID = GetParam("sRandomID");//页面导入数据标识,Guid

            string[] strArray = { "第一网格", "第二网格", "第三网格", "第四网格", "第五网格", "第六网格", "第七网格", "第八网格", "第九网格",
                                  "第十网格", "第十一网格", "第十二网格", "第十三网格", "第十四网格", "第十五网格", "第十六网格", "第十七网格",
                                  "第十八网格", "第十九网格", "第二十网格","第二十一网格","第二十二网格","第二十三网格","第二十四网格",
                                  "第二十五网格","第二十六网格","第二十七网格","第二十八网格","第二十九网格","第三十网格"};
            List<string> wgList = new List<string>();
            wgList.AddRange(strArray);

            string strCheck = "SELECT * FROM _SQ_Excel_BaseInfo  WHERE  [地区编码] = '" + sVillageCode + "' order by [序号]";
            DataTable dtCheck = SqlHelper.ExecuteSqlToTable(strCheck);

            string rowNum;//序号
            string rowVillageName;//社区名称
            int intNum = 0;//是否数字的转换out参数 
            for (int i = 0; i < dtCheck.Rows.Count; i++)//遍历Table行
            {
                rowNum = dtCheck.Rows[i]["序号"].ToString().Trim();
                rowVillageName = dtCheck.Rows[i]["社区名称"].ToString().Trim();//dtCheck.Rows[i][1].ToString().Trim();

                #region 不能为空判断,数据合法性验证
                if (rowNum == "")//行号
                {
                    bCheckResult = false;
                    mes += "序号【" + rowNum + "】,错误说明:“序号”数据列不能为空!</br>";
                }
                else if (!int.TryParse(rowNum, out intNum))
                {
                    bCheckResult = false;
                    mes += "序号【" + rowNum + "】,错误说明:“序号”数据列必须为正整数!序号:【" + rowNum + "】</br>";
                }
                if (dtCheck.Rows[i]["社区名称"].ToString().Trim() == "")//社区名称
                {
                    bCheckResult = false;
                    mes += "序号【" + rowNum + "】,错误说明:“社区名称”数据列不能为空!</br>";
                }
                if (dtCheck.Rows[i]["网格名称"].ToString().Trim() == "")//网格名称
                {
                    bCheckResult = false;
                    mes += "序号【" + rowNum + "】,错误说明:“网格名称”数据列不能为空!</br>";
                }
                else//网格名称不为空,必须为一定的格式【第一网格】
                {
                    string wgName = dtCheck.Rows[i]["网格名称"].ToString().Trim();
                    bool result = wgList.Contains(wgName);
                    if (!result)
                    {
                        bCheckResult = false;
                        mes += "序号【" + rowNum + "】,错误说明:“网格名称”数据列必须按规定的格式填写!例如:第一网格、第十二网格!</br>";
                    }
                }
                if (dtCheck.Rows[i]["小区名称"].ToString().Trim() == "")//小区名称
                {
                    bCheckResult = false;
                    mes += "序号【" + rowNum + "】,错误说明:“小区名称”数据列不能为空!</br>";
                }
                if (dtCheck.Rows[i]["楼栋名称"].ToString().Trim() == "")//楼栋名称
                {
                    bCheckResult = false;
                    mes += "序号【" + rowNum + "】,错误说明:“楼栋名称”数据列不能为空!</br>";
                }
                if (dtCheck.Rows[i]["总层数"].ToString().Trim() == "")//总层数
                {
                    bCheckResult = false;
                    mes += "序号【" + rowNum + "】,错误说明:“总层数”数据列不能为空!</br>";
                }
                else
                {
                    if (!int.TryParse(dtCheck.Rows[i]["总层数"].ToString().Trim(), out intNum))
                    {
                        bCheckResult = false;
                        mes += "序号【" + rowNum + "】,错误说明:“总层数”数据列必须为正整数!总层数:【" + dtCheck.Rows[i]["总层数"].ToString().Trim() + "】</br>";
                    }
                    else if (int.Parse(dtCheck.Rows[i]["总层数"].ToString().Trim()) == 0)
                    {
                        bCheckResult = false;
                        mes += "序号【" + rowNum + "】,错误说明:“总层数”数据列不能为0!</br>";
                    }
                }
                if (dtCheck.Rows[i]["负层数"].ToString().Trim() != "")//负层数
                {
                    if (!int.TryParse(dtCheck.Rows[i]["负层数"].ToString().Trim(), out intNum))
                    {
                        bCheckResult = false;
                        mes += "序号【" + rowNum + "】,错误说明:“负层数”数据列必须为正整数!负层数:【" + dtCheck.Rows[i]["负层数"].ToString().Trim() + "】</br>";
                    }
                }
                if (dtCheck.Rows[i]["单元数"].ToString().Trim() == "")//单元数
                {
                    bCheckResult = false;
                    mes += "序号【" + rowNum + "】,错误说明:“单元数”数据列不能为空!</br>";
                }
                else
                {
                    if (!int.TryParse(dtCheck.Rows[i]["单元数"].ToString().Trim(), out intNum))
                    {
                        bCheckResult = false;
                        mes += "序号【" + rowNum + "】,错误说明:“单元数”数据列必须为正整数!单元数:【" + dtCheck.Rows[i]["单元数"].ToString().Trim() + "】</br>";
                    }
                    else if (int.Parse(dtCheck.Rows[i]["单元数"].ToString().Trim()) == 0)
                    {
                        bCheckResult = false;
                        mes += "序号【" + rowNum + "】,错误说明:“单元数”数据列不能为0!</br>";
                    }
                }
                if (dtCheck.Rows[i]["每单元每层户数"].ToString().Trim() == "")//每单元每层户数
                {
                    bCheckResult = false;
                    mes += "序号【" + rowNum + "】,错误说明:“每单元每层户数”数据列不能为空!</br>";
                }
                else
                {
                    if (!int.TryParse(dtCheck.Rows[i]["每单元每层户数"].ToString().Trim(), out intNum))
                    {
                        bCheckResult = false;
                        mes += "序号【" + rowNum + "】,错误说明:“每单元每层户数”数据列必须为正整数!每单元每层户数:【" + dtCheck.Rows[i]["每单元每层户数"].ToString().Trim() + "】</br>";
                    }
                    else if (int.Parse(dtCheck.Rows[i]["每单元每层户数"].ToString().Trim()) == 0)
                    {
                        bCheckResult = false;
                        mes += "序号【" + rowNum + "】,错误说明:“每单元每层户数”数据列不能为0!</br>";
                    }
                }

                #endregion

                if (rowVillageName != sVillageName)//判断社区名称是否与导入地区相同
                {
                    bCheckResult = false;
                    mes += "序号【" + rowNum + "】,错误说明:Excel里的“社区名称”为【" + rowVillageName + "】,与所选的导入地区名称【" + sVillageName + "】不符!</br>";
                }
            }

            ///检验同一个小区下是否有二个相同的楼栋名称
            string strBuildCheck = "SELECT  [小区名称],[楼栋名称] FROM _SQ_Excel_BaseInfo  WHERE  [地区编码] = '" + sVillageCode + "' group by 小区名称,楼栋名称 having COUNT(1)>1";
            DataTable dtBuildCheck = SqlHelper.ExecuteSqlToTable(strBuildCheck);

            if (dtBuildCheck.Rows.Count > 0)
            {
                bCheckResult = false;
                for (int i = 0; i < dtBuildCheck.Rows.Count; i++)
                {
                    string strRepeatBuild = "SELECT * FROM _SQ_Excel_BaseInfo WHERE  [地区编码] = '" + sVillageCode + "' AND 小区名称='" + dtBuildCheck.Rows[i]["小区名称"] + "' AND 楼栋名称='" + dtBuildCheck.Rows[i]["楼栋名称"] + "'";
                    DataTable dtRepeatBuild = SqlHelper.ExecuteSqlToTable(strRepeatBuild);
                    for (int j = 0; j < dtRepeatBuild.Rows.Count; j++)
                    {
                        rowNum = dtRepeatBuild.Rows[j]["序号"].ToString().Trim();
                        mes += "序号【" + rowNum + "】,错误说明:同一小区下楼栋重复!小区名称:【" + dtRepeatBuild.Rows[j]["小区名称"] + "】---楼栋名称:【" + dtRepeatBuild.Rows[j]["楼栋名称"] + "】<br/>";
                    }
                }
            }

            ///检验:如果维护了单元户数,维护的数组长度是否与单元数一一对应
            string strCSCheck = "select 序号,小区名称,楼栋名称,总层数,负层数,单元数,每单元每层户数,单元户数 from _SQ_Excel_BaseInfo WHERE  [地区编码] = '" + sVillageCode + "'";
            DataTable dtCSCheck = SqlHelper.ExecuteSqlToTable(strCSCheck);
            for (int i = 0; i < dtCSCheck.Rows.Count; i++)
            {
                rowNum = dtCSCheck.Rows[i]["序号"].ToString().Trim();//序号
                if (ToInt(dtCSCheck.Rows[i]["负层数"].ToString()) > ToInt(dtCSCheck.Rows[i]["总层数"].ToString()))
                {
                    bCheckResult = false;
                    mes += "序号【" + rowNum + "】,错误说明:负层数不能大于总层数!负层数:【" + dtCSCheck.Rows[i]["负层数"] + "】---总层数:【" + dtCSCheck.Rows[i]["总层数"] + "】<br/>";
                }
                if (dtCSCheck.Rows[i]["单元户数"].ToString() != "" && dtCSCheck.Rows[i]["单元户数"] != null)
                {
                    string[] dyhs = dtCSCheck.Rows[i]["单元户数"].ToString().Replace(",", ",").TrimEnd(',').Split(',');
                    if (dyhs.Length != ToInt(dtCSCheck.Rows[i]["单元数"].ToString()))
                    {
                        bCheckResult = false;
                        mes += "序号【" + rowNum + "】,错误说明:单元户数维护的数量需要同单元数一致!单元数:【" + dtCSCheck.Rows[i]["单元数"] + "】---单元户数:【" + dtCSCheck.Rows[i]["单元户数"] + "】<br/>";
                    }
                }
            }

            if (mes == "")
            {
                mes = "数据校验成功!";
            }
            OutputResult(bCheckResult, mes);
        }
        #endregion

        #region 楼层验证
        private void ValidateBuild()
        {
            string sVillageCode = GetParam("sVillageCode");//地区控件选择的导入数据的地区---编码
            string sVillageName = GetParam("sVillageName");//地区控件选择的导入数据的地区---名称
            bool result = true;
            string mes = "";

            string strBuildSQL = "select 序号,楼栋主键,小区编码,小区名称,楼栋编码,楼栋名称,总层数,负层数,单元数,单元户数,每单元每层户数,不生成的门牌号,商品房,车库 from _SQ_Excel_BaseInfo where 地区编码 ='" + sVillageCode + "' and 总层数>33 order by 楼栋编码";
            DataTable dtBuild = SqlHelper.ExecuteSqlToTable(strBuildSQL);
            for (int i = 0; i < dtBuild.Rows.Count; i++)
            {
                result = false;
                string rowNum = dtBuild.Rows[i]["序号"].ToString().Trim();
                if (i > 1)
                {
                    mes += "                ";
                }
                mes += "序号【" + rowNum + "】,总层数为【" + dtBuild.Rows[i]["总层数"].ToString().Trim() + "】</br>";
            }
            if (mes != "")
            {
                mes += "                ";
                mes += "是否确定生成基础信息?";
            }
            OutputResult(result, mes);
        }
        #endregion

        #region 一键导入网格小区楼栋
        /// <summary>
        /// 一键导入网格小区楼栋
        /// </summary>
        private void IntelligentImPort()
        {
            bool bInitResult = true;
            bool bWGUpdate = true;
            bool bHomeBuildUpdate = true;
            string mes = "基础数据生成成功!";
            string sFormat = GetParam("sFormat");//门牌号格式
            string sVillageCode = GetParam("sVillageCode");//社区编码 
            string sVillageName = GetParam("sVillageName");//地区控件选择的导入数据的地区---名称
            //string sRandomID = GetParam("sRandomID");//页面导入数据标识,Guid 

            bWGUpdate = UpdateWGCode(sVillageCode);
            bHomeBuildUpdate = UpdateHomeBuildCode(sVillageCode);

            List<string> sqlList = new List<string>();//执行语句
            List<SqlParameter[]> paraList = new List<SqlParameter[]>();//执行语句相对应的参数

            #region 生成导入网格信息SQL
            string strWGSQL = "select distinct 地区编码,地区名称,网格编码,网格名称 from _SQ_Excel_BaseInfo where 地区编码='" + sVillageCode + "' order by 网格编码";
            DataTable dtWG = SqlHelper.ExecuteSqlToTable(strWGSQL);
            string strInsertSQL = "insert into SQ_WGInfo(gID,sVillageCode,sCode,sName,iDeleteMark,iSort,dCreateDate,sCreateUserRealname) values(NEWID(),@sWGVillageCode,@sWGCode,@sWGName,0,0,getdate(),'数据导入')";
            int iWGRows = dtWG.Rows.Count;
            for (int i = 0; i < iWGRows; i++)
            {
                string sWGVillageCode = dtWG.Rows[i]["地区编码"].ToString();
                string sWGCode = dtWG.Rows[i]["网格编码"].ToString();
                string sWGName = dtWG.Rows[i]["网格名称"].ToString();
                sqlList.Add(strInsertSQL);
                paraList.Add(new SqlParameter[] { 
                        new SqlParameter("@sWGVillageCode", sWGVillageCode),
                        new SqlParameter("@sWGCode", sWGCode),
                        new SqlParameter("@sWGName", sWGName)
                    });
            }
            #endregion

            #region 生成导入小区信息SQL
            string strHomeSQL = "select distinct 地区编码,地区名称,小区编码,小区名称 from _SQ_Excel_BaseInfo where 地区编码='" + sVillageCode + "' order by 小区编码";
            DataTable dtHome = SqlHelper.ExecuteSqlToTable(strHomeSQL);

            string strInsertHomeSQL = "insert into SQ_Homes(gID,sVillageCode,sHomeCode,sHomeName,iDeleteMark,iSort,dCreateDate,sCreateUserRealname) values(NEWID(),@sHomeVillageCode,@sHomeCode,@sHomeName,0,0,getdate(),'数据导入')";
            int iHomeRows = dtHome.Rows.Count;

            for (int i = 0; i < iHomeRows; i++)
            {
                string sHomeVillageCode = dtHome.Rows[i]["地区编码"].ToString();
                string sHomeCode = dtHome.Rows[i]["小区编码"].ToString();
                string sHomeName = dtHome.Rows[i]["小区名称"].ToString();
                sqlList.Add(strInsertHomeSQL);
                paraList.Add(new SqlParameter[]{
                        new SqlParameter("@sHomeVillageCode",sHomeVillageCode),
                        new SqlParameter("@sHomeCode",sHomeCode),
                        new SqlParameter("@sHomeName",sHomeName),
                });
            }

            #endregion

            #region 生成导入楼栋信息SQL
            string strBuildSQL = "select 楼栋主键,小区编码,小区名称,楼栋编码,楼栋名称,总层数,负层数,单元数,单元户数,每单元每层户数,不生成的门牌号,商品房,车库 from _SQ_Excel_BaseInfo where 地区编码 ='" + sVillageCode + "' order by 楼栋编码";
            DataTable dtBuild = SqlHelper.ExecuteSqlToTable(strBuildSQL);

            string strInsertBuildSQL = "insert into SQ_Build(gID,sBuildCode,sBuildName,sHomeCode,iCS,iFCS,iFWS,iDYS,sFWLX,sImage,iDeleteMark,iSort,dCreateDate,sCreateUserRealname,FW_DY,fXpoint,fYpoint,fWGXpoint,fWGYpoint,BdXpoint,BdYpoint,sFormat) ";
            strInsertBuildSQL += "values(@sBuildKey,@sBuildCode,@sBuildName,@sBuildHomeCode,@CS,@FCS,@FWS,@DYS,'02',@sImage,0,0,getdate(),'数据导入',@FW_DY,'0','0','0','0','0','0',@sFormat) ";
            string strInsertWGLDGLBSQL = "insert into SQ_WGLDGLB(gID,gWGID,sBuildCode,iDeleteMark,iSort,dCreateDate,sCreateUserRealname) values(NEWID(),NEWID(),@sBuildCode,0,0,getdate(),'数据导入')";
            int iBuildRows = dtBuild.Rows.Count;
            for (int i = 0; i < iBuildRows; i++)
            {
                string sBuildKey = dtBuild.Rows[i]["楼栋主键"].ToString();//楼栋主键
                string sBuildCode = dtBuild.Rows[i]["楼栋编码"].ToString();//楼栋编码
                string sBuildName = dtBuild.Rows[i]["楼栋名称"].ToString();//楼栋名称
                string sBuildHomeCode = dtBuild.Rows[i]["小区编码"].ToString();//小区编码
                string CS = dtBuild.Rows[i]["总层数"].ToString();//总层数
                string FCS = dtBuild.Rows[i]["负层数"].ToString();//负层数
                string FWS = dtBuild.Rows[i]["每单元每层户数"].ToString();//每单元每层户数
                string DYS = dtBuild.Rows[i]["单元数"].ToString();//单元数
                string FW_DY = dtBuild.Rows[i]["单元户数"].ToString().Replace(",", ",");//单元户数
                //根据层数,单位数,户数自动生成相应的图片
                string sImage = GetHomeImage(CS, DYS);//楼栋图片
                sqlList.Add(strInsertBuildSQL);
                paraList.Add(new SqlParameter[]{
                        new SqlParameter("@sBuildKey",sBuildKey),
                        new SqlParameter("@sBuildCode",sBuildCode),
                        new SqlParameter("@sBuildName",sBuildName),
                        new SqlParameter("@sBuildHomeCode",sBuildHomeCode),
                        new SqlParameter("@CS",CS),
                        new SqlParameter("@FCS",FCS),
                        new SqlParameter("@FWS",FWS),
                        new SqlParameter("@DYS",DYS),
                        new SqlParameter("@sImage",sImage),
                        new SqlParameter("@FW_DY",FW_DY),
                        new SqlParameter("@sFormat",sFormat)
                });

                sqlList.Add(strInsertWGLDGLBSQL);
                paraList.Add(new SqlParameter[]{
                        new SqlParameter("@sBuildCode",sBuildCode)
                });
            }

            string strUpdateWGLDGLBSQL = "update SQ_WGLDGLB set gWGID=(select gID from SQ_WGInfo w join _SQ_Excel_BaseInfo b on w.sCode=b.网格编码 and SQ_WGLDGLB.sBuildCode=b.楼栋编码 ) where sBuildCode like @sVillageCode";
            sqlList.Add(strUpdateWGLDGLBSQL);
            string paraVillageCode = sVillageCode + "%";
            paraList.Add(new SqlParameter[]{
                    new SqlParameter("@sVillageCode",paraVillageCode)
            });

            #endregion

            #region 更新网格楼栋坐标(排列楼栋)
            string strWGInfoSQL = "select gID from SQ_WGInfo where sVillageCode='" + sVillageCode + "' order by sCode";
            DataTable dtWGInfo = SqlHelper.ExecuteSqlToTable(strWGInfoSQL);

            for (int i = 0; i < dtWGInfo.Rows.Count; i++)
            {
                string sWgID = dtWGInfo.Rows[i]["gID"].ToString();//网格主键
                string strWGBuild = "select B.gID from SQ_Build B left join SQ_WGLDGLB G on B.sBuildCode = G.sBuildCode where gWGID = '" + sWgID + "' order by B.sBuildCode";
                DataTable dtWGBuild = SqlHelper.ExecuteSqlToTable(strWGBuild);//网格下的所有楼栋

                List<string> listUpdatePoint = new List<string>();//更新坐标语句集合
                for (int k = 1; k <= dtWGBuild.Rows.Count; k++)
                {
                    string sBuildID = dtWGBuild.Rows[k - 1]["gID"].ToString();//楼栋主键
                    int xPoint = 76 + 107 * ((k - 1) % 6);//X轴坐标位置
                    int yPoint = 64 + 97 * (k / 6);//Y轴坐标位置
                    string strUpdatePoint = "update SQ_Build set fWGXpoint=@xPoint, fWGYpoint=@yPoint where gID=@sBuildID";
                    sqlList.Add(strUpdatePoint);
                    paraList.Add(new SqlParameter[] { 
                                new SqlParameter("@xPoint",xPoint),
                                new SqlParameter("@yPoint",yPoint),
                                new SqlParameter("@sBuildID",sBuildID)
                        });
                }
            }

            #endregion

            #region 更新小区楼栋坐标(排列楼栋)
            string strHomeInfoSQL = "select gID,sHomeCode from SQ_Homes where sVillageCode='" + sVillageCode + "' order by sHomeCode";
            DataTable dtHomeInfo = SqlHelper.ExecuteSqlToTable(strHomeInfoSQL);

            for (int i = 0; i < dtHomeInfo.Rows.Count; i++)
            {
                string sHomeCode = dtHomeInfo.Rows[i]["sHomeCode"].ToString();//网格主键
                string strHomeBuild = "select gID from SQ_Build where sHomeCode = '" + sHomeCode + "' order by sBuildCode";
                DataTable dtHomeBuild = SqlHelper.ExecuteSqlToTable(strHomeBuild);//网格下的所有楼栋

                List<string> listUpdatePoint = new List<string>();//更新坐标语句集合
                for (int k = 1; k <= dtHomeBuild.Rows.Count; k++)
                {
                    string sBuildID = dtHomeBuild.Rows[k - 1]["gID"].ToString();//楼栋主键
                    int xPoint = 76 + 107 * ((k - 1) % 6);//X轴坐标位置
                    int yPoint = 64 + 97 * (k / 6);//Y轴坐标位置
                    string strUpdatePoint = "update SQ_Build set fXpoint=@xPoint, fYpoint=@yPoint where gID=@sBuildID";
                    sqlList.Add(strUpdatePoint);
                    paraList.Add(new SqlParameter[]{
                            new SqlParameter("@xPoint",xPoint),
                            new SqlParameter("@yPoint",yPoint),
                            new SqlParameter("@sBuildID",sBuildID)
                    });
                }
            }
            #endregion

            #region 生成房屋信息SQL

            //string sFormat = GetParam("sFormat");//门牌号格式
            string strInsertFWSQL = "insert into SQ_FWInfo(gID,sBuildCode,sMPH,sFWYT,iDeleteMark,iSort,dCreateDate,sCreateUserRealname,MPHCode,i_CS,i_DY,i_NO) " +
                "values(NEWID(),@sBuildCode,@sMPH,@lx,0,0,getdate(),'数据导入',@sdoor,@j,@k,@no)";

            for (int i = 0; i < iBuildRows; i++)
            {
                string sBuildKey = dtBuild.Rows[i]["楼栋主键"].ToString();//楼栋主键
                string sBuildCode = dtBuild.Rows[i]["楼栋编码"].ToString();//楼栋编码
                string sBuildName = dtBuild.Rows[i]["楼栋名称"].ToString();//楼栋名称
                string sBuildHomeCode = dtBuild.Rows[i]["小区编码"].ToString();//小区编码
                int iCS = ToInt(dtBuild.Rows[i]["总层数"].ToString());//总层数
                int iFCS = ToInt(dtBuild.Rows[i]["负层数"].ToString());//负层数
                int iZCS = iCS - iFCS;//正层数
                int iDYFWS = ToInt(dtBuild.Rows[i]["每单元每层户数"].ToString());//每单元每层户数
                int iDYS = ToInt(dtBuild.Rows[i]["单元数"].ToString());//单元数
                var iDYHS = dtBuild.Rows[i]["单元户数"].ToString().Trim().Replace(",", ",").Split(',');
                var 不生成的门牌号 = dtBuild.Rows[i]["不生成的门牌号"].ToString().Replace(",", ",");
                if (!string.IsNullOrEmpty(不生成的门牌号))
                {
                    不生成的门牌号 = "," + 不生成的门牌号 + ",";
                }
                var 商品房 = dtBuild.Rows[i]["商品房"].ToString().Replace(",", ",");
                if (!string.IsNullOrEmpty(商品房))
                {
                    商品房 = "," + 商品房 + ",";
                }
                var 车库 = dtBuild.Rows[i]["车库"].ToString().Replace(",", ",");
                if (!string.IsNullOrEmpty(车库))
                {
                    车库 = "," + 车库 + ",";
                }

                for (int j = -iFCS; j <= iZCS; j++)//层数
                {
                    if (j == 0)
                        continue;
                    bool fc = j < 0;//是否负层

                    for (int k = 1; k <= iDYS; k++)//单元数
                    {
                        int hs = iDYFWS;
                        if (iDYHS.Length >= k)
                        {
                            if (iDYHS[k - 1].Trim() != "")
                                hs = Convert.ToInt32(iDYHS[k - 1]);
                        }
                        if (hs > iDYFWS)
                            hs = iDYFWS;

                        for (int m = 1; m <= hs; m++)
                        {
                            var no = (k - 1) * iDYFWS + m;
                            var sdoor = j + no.ToString("D2");
                            string sMPH = (fc ? "-" : "") + SQ_Common.GetMPH(sFormat, fc ? -j : j, k, iDYFWS, m);
                            if (不生成的门牌号.Contains("," + sMPH + ","))
                                continue;
                            var lx = "01";
                            if (商品房.Contains("," + sdoor + ","))
                                lx = "02";
                            if (车库.Contains("," + sdoor + ","))
                                lx = "03";
                            sqlList.Add(strInsertFWSQL);
                            paraList.Add(new SqlParameter[]{
                                    new SqlParameter("@sBuildCode",sBuildCode),
                                    new SqlParameter("@sMPH",sMPH),
                                    new SqlParameter("@lx",lx),
                                    new SqlParameter("@sdoor",sdoor),
                                    new SqlParameter("@j",j),
                                    new SqlParameter("@k",k),
                                    new SqlParameter("@no",no)
                            });
                        }
                    }
                }
            }
            #endregion

            #region 记录数据导入日志
            string strInsertLog = "insert into _SQ_DataImportLog(sID,sVillageCode,sVillageName,iType,sUpLoadUserLoginName,sUpLoadUserRealName,dUpLoadDate,sFormat)" +
                                  " values(NEWID(),@sVillageCode,@sVillageName,1,@sUserName,@sRealName,getdate(),@sFormat)";
            string sUserName = GetSessionCurrentUserInfo.sUserName;//用户登陆名
            string sRealName = GetSessionCurrentUserInfo.sRealName;//用户姓名
            sqlList.Add(strInsertLog);
            paraList.Add(new SqlParameter[] { 
                    new SqlParameter("@sVillageCode",sVillageCode),
                    new SqlParameter("@sVillageName",sVillageName),
                    new SqlParameter("@sUserName",sUserName),
                    new SqlParameter("@sRealName",sRealName),
                    new SqlParameter("@sFormat",sFormat)
            });

            try
            {
                bInitResult = SqlHelper.ExecuteTrans(sqlList, paraList);
            }
            catch (Exception)
            {
                bInitResult = false;
                mes = "基础数据生成失败!";
                throw;
            }

            #endregion

            OutputResult(bWGUpdate & bHomeBuildUpdate & bInitResult, mes);
        }

        /// <summary>
        /// 更新导入数据网格编码
        /// </summary>
        private bool UpdateWGCode(string sVillageCode)
        {
            string strWGSQL = "select distinct 序号,地区编码,地区名称,网格编码,网格名称 from _SQ_Excel_BaseInfo where 地区编码='" + sVillageCode + "' order by 序号";
            DataTable dtWG = SqlHelper.ExecuteSqlToTable(strWGSQL);
            bool bUpdateWGCode = true;
            int rows = dtWG.Rows.Count;
            string sWGCode = "";
            string sWGName = "";
            try
            {
                int num = 0;//生成网格的序号
                for (int i = 0; i < rows; i++)
                {
                    if (i > 0)
                    {
                        ///由于取了序号,网络信息重复,过滤重复的网格更新
                        if (dtWG.Rows[i - 1]["网格名称"].ToString() != dtWG.Rows[i]["网格名称"].ToString())
                        {
                            sWGCode = dtWG.Rows[i]["地区编码"] + GetCode(num + 1);
                            sWGName = dtWG.Rows[i]["网格名称"].ToString();
                            string strUpdateWGCode = "update _SQ_Excel_BaseInfo set 网格编码='" + sWGCode + "' where 网格名称='" + sWGName + "' and 地区编码='" + sVillageCode + "' and (网格编码 ='' or 网格编码 is null)";
                            bUpdateWGCode = SqlHelper.ExecuteSql(strUpdateWGCode);
                            num++;
                        }
                    }
                    else
                    {
                        sWGCode = dtWG.Rows[i]["地区编码"] + GetCode(num + 1);
                        sWGName = dtWG.Rows[i]["网格名称"].ToString();
                        string strUpdateWGCode = "update _SQ_Excel_BaseInfo set 网格编码='" + sWGCode + "' where 网格名称='" + sWGName + "' and 地区编码='" + sVillageCode + "' and (网格编码 ='' or 网格编码 is null)";
                        bUpdateWGCode = SqlHelper.ExecuteSql(strUpdateWGCode);
                        num++;
                    }
                }
            }
            catch (Exception)
            {
                bUpdateWGCode = false;
                throw;
            }

            return bUpdateWGCode;
        }

        /// <summary>
        /// 更新导入数据小区编码,楼栋编码
        /// </summary>
        private bool UpdateHomeBuildCode(string sVillageCode)
        {
            string strHomeSQL = "select distinct 地区编码,地区名称,小区编码,小区名称 from _SQ_Excel_BaseInfo where 地区编码='" + sVillageCode + "'";// order by 小区编码";
            DataTable dtHome = SqlHelper.ExecuteSqlToTable(strHomeSQL);
            bool bUpdateHomeCode = true;
            bool bUpdateBuildCode = true;
            int rows = dtHome.Rows.Count;
            string sHomeCode = "";
            string sHomeName = "";
            try
            {
                for (int i = 0; i < rows; i++)
                {
                    sHomeCode = dtHome.Rows[i]["地区编码"] + GetCode(i + 1);
                    sHomeName = dtHome.Rows[i]["小区名称"].ToString();
                    string strUpdateWGCode = "update _SQ_Excel_BaseInfo set 小区编码='" + sHomeCode + "' where 小区名称='" + sHomeName + "' and 地区编码='" + sVillageCode + "'";
                    bUpdateHomeCode = SqlHelper.ExecuteSql(strUpdateWGCode);


                    string strBuildSQL = "select distinct 小区编码,小区名称,楼栋编码,楼栋名称 from _SQ_Excel_BaseInfo where 小区编码='" + sHomeCode + "' order by 楼栋编码";
                    DataTable dtBuild = SqlHelper.ExecuteSqlToTable(strBuildSQL);

                    int iBuildRows = dtBuild.Rows.Count;
                    string sBuildCode = "";
                    string sBuildName = "";
                    try
                    {
                        for (int j = 0; j < iBuildRows; j++)
                        {
                            sBuildCode = dtBuild.Rows[j]["小区编码"] + GetCode(j + 1);
                            sBuildName = dtBuild.Rows[j]["楼栋名称"].ToString();
                            string strUpdateHomeCode = "update _SQ_Excel_BaseInfo set 楼栋编码='" + sBuildCode + "' where 楼栋名称='" + sBuildName + "' and 小区编码='" + sHomeCode + "'";
                            bUpdateBuildCode = SqlHelper.ExecuteSql(strUpdateHomeCode);
                        }
                    }
                    catch (Exception)
                    {
                        bUpdateBuildCode = false;
                        throw;
                    }

                }
            }
            catch (Exception)
            {
                bUpdateHomeCode = false;
                throw;
            }

            return bUpdateHomeCode && bUpdateBuildCode;
        }

        #endregion

        #region
        /// <summary>
        /// 一键生成网格用户信息
        /// </summary>
        private void IntelligentWGUser()
        {
            bool bInitResult = true;
            string mes = "网格用户信息生成成功!";
            string sVillageCode = GetParam("sVillageCode");//社区编码 
            string sVillageName = GetParam("sVillageName");//地区控件选择的导入数据的地区---名称

            List<string> sqlList = new List<string>();//执行语句
            List<SqlParameter[]> paraList = new List<SqlParameter[]>();//执行语句相对应的参数

            #region 生成用户信息

            string gCreateUserId = GetSessionCurrentUserInfo.gUserID.ToString();//用户主键
            string sCreateUserRealname = GetSessionCurrentUserInfo.sRealName + "|批量生成";//用户姓名

            string strInsertUser = "insert into sys_Users(gUserID,iType,gOrganizeID,sUserName,sUserNameLower,sRealName,sPwd,sPwdFormat,bIsLockedOut,iDeleteMark,dCreateDate,gCreateUserId,sCreateUserRealname,bIsManagerLockedout,iAudit) " +
                                   " values(@gUserID,2,@gOrganizeID,@sUserName,@sUserNameLower,@sRealName,@sPwd,@sPwdFormat,0,0,getdate(),@gCreateUserId,@sCreateUserRealname,0,2)";
            string strInsertUserInRole = "insert into sys_UsersInRoles(gRoleID,gUserID,iDeleteMark,iSort,dCreateDate,gCreateUserId,sCreateUserRealname)" +
                                         " values(@gRoleID,@gUserID,0,0,getdate(),@gCreateUserId,@sCreateUserRealname)";
            string strInsertWGUser = "insert into SQ_WGUser(gID,gWGID,gUserID,iDeleteMark,iSort,dCreateDate,gCreateUserId,sCreateUserRealname)" +
                                     " values(NEWID(),@gWGID,@gUserID,0,0,getdate(),@gCreateUserId,@sCreateUserRealname)";

            string strWGSQL = "select distinct 地区编码,地区名称,网格编码,网格名称,w.gID from _SQ_Excel_BaseInfo b join dbo.SQ_WGInfo w  on b.网格编码=w.scode where 地区编码='" + sVillageCode + "' order by 网格编码";
            DataTable dtWG = SqlHelper.ExecuteSqlToTable(strWGSQL);

            OrganizeBLL bll = new OrganizeBLL();
            sys_Organize OrgModel = bll.GetModeByAreaCode(sVillageCode);//当级地区的上级地区的机构实体
            if (OrgModel != null)
            {
                string gOrganizeID = OrgModel.gID.ToString();
                int iWGRows = dtWG.Rows.Count;
                List<string> userNameList = userBll.GetUserName(sVillageCode, iWGRows);
                for (int i = 0; i < iWGRows; i++)
                {
                    string gUserID = Guid.NewGuid().ToString();//用户主键
                    string gWGID = dtWG.Rows[i]["gID"].ToString();//网格主键
                    string sWGCode = dtWG.Rows[i]["网格编码"].ToString();//网格编码
                    string sWGName = dtWG.Rows[i]["网格名称"].ToString();//网格名称
                    sqlList.Add(strInsertUser);
                    paraList.Add(new SqlParameter[] { 
                            new SqlParameter("@gUserID",gUserID),//用户主键 
                            new SqlParameter("@gOrganizeID",gOrganizeID),//机构主键        
                            new SqlParameter("@sUserName",userNameList[i]),//登录用户名
                            new SqlParameter("@sUserNameLower",userNameList[i].ToLower()),//登录用户名(小写)
                            new SqlParameter("@sRealName",sWGName),//真实姓名
                            new SqlParameter("@sPwd","202cb962ac59075b964b07152d234b70"),//加密后的:123
                            new SqlParameter("@sPwdFormat","0"),
                            new SqlParameter("@gCreateUserId",gCreateUserId),
                            new SqlParameter("@sCreateUserRealname",sCreateUserRealname)
                     });

                    sqlList.Add(strInsertUserInRole);
                    paraList.Add(new SqlParameter[]{
                            new SqlParameter("@gRoleID","4CFD5CB4-D04B-46C0-8738-C8119D2A9FBB"),
                            new SqlParameter("@gUserID",gUserID),
                            new SqlParameter("@gCreateUserId",gCreateUserId),
                            new SqlParameter("@sCreateUserRealname",sCreateUserRealname)
                    });

                    sqlList.Add(strInsertWGUser);
                    paraList.Add(new SqlParameter[]{
                            new SqlParameter("@gWGID",gWGID),
                            new SqlParameter("@gUserID",gUserID),
                            new SqlParameter("@gCreateUserId",gCreateUserId),
                            new SqlParameter("@sCreateUserRealname",sCreateUserRealname),
                    });
                }
            }
            else
            {
                OutputResult(bInitResult, mes);
                return;
            }
            #endregion

            #region 记录数据导入日志
            string strInsertLog = "insert into _SQ_DataImportLog(sID,sVillageCode,sVillageName,iType,sUpLoadUserLoginName,sUpLoadUserRealName,dUpLoadDate)" +
                                  " values(NEWID(),@sVillageCode,@sVillageName,3,@sUserName,@sRealName,getdate())";
            string sUserName = GetSessionCurrentUserInfo.sUserName;//用户登陆名
            string sRealName = GetSessionCurrentUserInfo.sRealName;//用户姓名
            sqlList.Add(strInsertLog);
            paraList.Add(new SqlParameter[] { 
                    new SqlParameter("@sVillageCode",sVillageCode),
                    new SqlParameter("@sVillageName",sVillageName),
                    new SqlParameter("@sUserName",sUserName),
                    new SqlParameter("@sRealName",sRealName),
            });
            try
            {
                bInitResult = SqlHelper.ExecuteTrans(sqlList, paraList);
            }
            catch (Exception)
            {
                bInitResult = false;
                mes = "网格用户信息生成失败!";
                OutputResult(bInitResult, mes);
                throw;
            }
            #endregion

            OutputResult(bInitResult, mes);
        }
        #endregion

        #region 非功能性辅助方法
        /// <summary>
        /// 获取后三位编码
        /// </summary>
        /// <param name="i"></param>
        /// <returns></returns>
        private string GetCode(int i)
        {
            if (i < 10)
                return "00" + i;
            else if (i < 100)
                return "0" + i;
            else
                return i.ToString();
        }

        /// <summary>
        /// 根据层数,单位数,户数自动生成相应的图片
        /// </summary>
        /// <param name="CS">层数</param>
        /// <param name="DYS">单位数</param>
        /// <param name="FWS">单元户数</param>
        /// <returns></returns>
        public string GetHomeImage(string CS, string DYS)
        {
            int f = ToInt(CS);
            int g = ToInt(DYS);
            //int h = ToInt(FWS);
            if (f == 1 && g == 1)//&& h == 1)
                return "别墅_01.png";
            if (f > 1 && f <= 7)
                return "多层_06.png";
            if (f > 7)
                return "小高层_02.png";
            return "民房_011.png";
        }

        /// <summary>
        /// 转换字符串类型为整型
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public int ToInt(string str)
        {
            int _outint = 0;
            int.TryParse(str, out _outint);
            return _outint;
        }

        /// <summary>
        /// 检验Excel列数据项与模板数据项是否符合
        /// </summary>
        /// <param name="dt"></param>
        /// <returns></returns>
        public bool CheckRule(DataTable dt, out string mes, string sVillageName)
        {
            string[] strArray = { "序号", "社区名称", "网格名称", "小区名称", "楼栋名称", "总层数", "负层数", "单元数", "每单元每层户数", "单元户数", "不生成的门牌号", "商品房", "车库", "备注" };
            List<string> list = new List<string>();
            list.AddRange(strArray);//模板字段列集合
            mes = "";
            bool bResult = true;

            List<string> excelList = new List<string>();

            DataRow dRow = dt.Rows[0];
            bool IsTitle = true;//Excel是否有标题行,默认有
            string columnName = dRow[0].ToString();
            if (columnName != "序号")
            {
                IsTitle = false;
            }
            for (int i = 0; i < dt.Columns.Count; i++)
            {
                columnName = IsTitle == true ? dRow[i].ToString() : dt.Columns[i].ColumnName;
                if (!columnName.StartsWith("F"))
                {
                    excelList.Add(columnName);//Excel字段列集合
                }
            }

            if (excelList.Count != 14)
            {
                bResult = false;
                mes = "数据校验失败!<br/>《社区网格信息采集模版》中数据列必须为14列!<br/>";

                var listMore = excelList.Except(list);//多出的数据列
                foreach (var item in listMore)
                {
                    mes += "《社区网格信息采集模版》中多出“" + item + "”数据列!请删除!<br/>";
                }

                var listLess = list.Except(excelList);//少的数据列
                foreach (var item in listLess)
                {
                    mes += "《社区网格信息采集模版》中缺少“" + item + "”数据列!<br/>";
                }
            }
            else
            {
                for (int i = 0; i < strArray.Length; i++)
                {
                    if (excelList[i] != strArray[i])
                    {
                        bResult = false;
                        break;
                    }
                }
                if (!bResult)
                {
                    mes += "《社区网格信息采集模版》中数据列名称和顺序必须与下列信息一致:</br>";
                    mes += "【" + strArray[0] + "】|【" + strArray[1] + "】|【" + strArray[2] + "】|【" + strArray[3] + "】|【" + strArray[4] + "】|【" + strArray[5] + "】|【" + strArray[6] + "】|【" + strArray[7] + "】|【" + strArray[8] + "】|【" + strArray[9] + "】|【" + strArray[10] + "】|【" + strArray[11] + "】|【" + strArray[12] + "】|【" + strArray[13] + "】</br>";
                }
            }
            return bResult;
        }

        /// <summary>
        /// 去除Excel中的空白行
        /// </summary>
        /// <param name="dt"></param>
        protected void removeEmpty(DataTable dt)
        {
            List<DataRow> removelist = new List<DataRow>();
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                bool rowdataisnull = true;
                for (int j = 0; j < dt.Columns.Count; j++)
                {

                    if (!string.IsNullOrEmpty(dt.Rows[i][j].ToString().Trim()))
                    {

                        rowdataisnull = false;
                    }

                }
                if (rowdataisnull)
                {
                    removelist.Add(dt.Rows[i]);
                }

            }
            for (int i = 0; i < removelist.Count; i++)
            {
                dt.Rows.Remove(removelist[i]);
            }
        }

        #endregion
    }
}

PeopleInfoListHandler

using HMFW.SQLServerDAL;
using HMFW.Web.App_Code;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.IO;
using System.Linq;
using System.Text;
using System.Web;

namespace HMFW.Web.Pages.DataImport
{
    /// <summary>
    /// PeopleInfoListHandler 的摘要说明
    /// </summary>
    public class PeopleInfoListHandler : BaseHandler
    {
        protected override void ActionHandler(string action)
        {
            switch (action.ToLower())
            {
                case "fileupload"://上传社区导入数据
                    UploadFile();
                    break;
                case "inexport":
                    ReadExcel();//导入Excel数据表临时存储表
                    break;
                case "datavalidate"://数据校验
                    DataValidate();
                    break;
                case "intelligentimport"://一键导入家庭人口信息
                    IntelligentImPort();
                    break;
                default:
                    break;
            }
        }

        #region 文件上传
        /// <summary>
        /// 文件上传
        /// </summary>
        private void UploadFile()
        {
            string pathPrefix = "/upload/DataImport/PersonInfo/";
            try
            {
                HttpPostedFile file = _context.Request.Files["Filedata"];
                if (file == null || file.ContentLength == 0)
                    throw new ArgumentOutOfRangeException("没有文件需要上传或文件过小!");
                if (file.ContentLength > 10000000)
                    throw new ArgumentOutOfRangeException(string.Format("所上传的文件大小{0}字节超过指定大小{1}字节!", file.ContentLength, 10000000));

                string[] strings = file.FileName.Split('.');
                string path = Path.Combine(pathPrefix,
                                           DateTime.Now.ToString("yyyyMMddHHmmss") + DateTime.Now.Millisecond + "." +
                                           strings[strings.Length - 1]);
                string sbst;
                try
                {
                    sbst = HttpContext.Current.Server.MapPath(path);
                }
                catch
                {
                    sbst = path;
                }
                FileInfo fileInfo = new FileInfo(sbst);
                if (!fileInfo.Directory.Exists)
                    fileInfo.Directory.Create();
                file.SaveAs(sbst);
                _context.Response.StatusCode = 200;
                _context.Response.Write(path);
            }
            catch
            {
                // If any kind of error occurs return a 500 Internal Server error
                _context.Response.StatusCode = 500;
                _context.Response.Write("An error occured");
                _context.Response.End();
            }
            finally
            {
                _context.Response.End();
            }
        }
        #endregion

        #region Excel数据导入数据库
        /// <summary>
        /// Excel数据导入数据库
        /// </summary>
        private void ReadExcel()
        {
            string sVillageCode = GetParam("sVillageCode");
            string sVillageName = GetParam("sVillageName");
            string sFileName = GetParam("filePath");//Excel路径
            string sRandomID = GetParam("sRandomID");//页面导入数据标识,Guid

            string connStr = "";
            string fileType = System.IO.Path.GetExtension(sFileName);
            if (string.IsNullOrEmpty(fileType))
            {
                Output("请选择需要导入的文件!");
            }
            sFileName = _context.Server.MapPath(sFileName);
            if (fileType == ".xls")
                connStr = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + sFileName + ";" + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\"";
            else
                connStr = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + sFileName + ";" + ";Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\"";
            string sql_F = "Select * FROM [{0}]";

            DataTable dtResult = new DataTable();
            OleDbConnection conn = null;
            OleDbDataAdapter da = null;
            DataTable dtSheetName = null;
            bool resul = true;
            string Mes = "上传成功!";

            try
            {
                // 初始化连接,并打开
                conn = new OleDbConnection(connStr);
                conn.Open();
                // 获取数据源的表定义元数据                        
                string SheetName = "";
                dtSheetName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
                // 初始化适配器
                da = new OleDbDataAdapter();
                //SheetName = (string)dtSheetName.Rows[0]["TABLE_NAME"];
                for (int i = 0; i < dtSheetName.Rows.Count; i++)
                {
                    SheetName += dtSheetName.Rows[i]["TABLE_NAME"].ToString();
                }

                if (SheetName.Contains("社区人口信息$"))
                {
                    da.SelectCommand = new OleDbCommand(String.Format(sql_F, "社区人口信息$"), conn);
                    da.Fill(dtResult);

                    for (int i = 0; i < 13; i++)
                    {
                        dtResult.Rows.RemoveAt(dtResult.Rows.Count - 1);
                    }
                    string errMes = "";
                    if (!CheckRule(dtResult, out errMes, sVillageName))
                    {
                        resul = false;
                        Mes = errMes;   //"Excel列数据项与模板数据项不符合,请检验!";
                    }
                    else
                    {
                        string strDelSQL = "delete from _SQ_Excel_PeopleInfo where sRandomID='" + sRandomID + "'";
                        SqlHelper.ExecuteSql(strDelSQL);

                        string strSQL = "";
                        string sHouseholdIDCard = "";//户主身份证号
                        string sFamilyID = "";//家庭表主键
                        string sFamilyNo = "";//家庭编码
                        string sMPH = "";//门牌号
                        string sJTGX = "";//家庭关系 
                        foreach (DataRow r in dtResult.Rows)
                        {
                            if (string.IsNullOrEmpty(r[0].ToString().Trim()) || r[0].ToString() != "序号")
                            {
                                sJTGX = r[8].ToString().Trim();
                                if (sJTGX == "本人")
                                {
                                    sHouseholdIDCard = r[9].ToString();//户主身份证号
                                    sFamilyID = Guid.NewGuid().ToString().ToUpper();//家庭表主键
                                    sFamilyNo = Guid.NewGuid().ToString().ToUpper();//家庭编码
                                    sMPH = r[5].ToString();//户主门牌号
                                }
                                else if (sJTGX == "孙子" || sJTGX == "孙女" || sJTGX == "外孙子" || sJTGX == "外孙女")
                                {
                                    sJTGX = "孙子、孙女或外孙子、外孙女";
                                }
                                else if (sJTGX == "祖父母" || sJTGX == "外祖父母")
                                {
                                    sJTGX = "孙子、孙女或外孙子、外孙女";
                                }
                                if (r[5].ToString() == "")
                                {
                                    r[5] = sMPH;
                                }
                                strSQL = "insert into _SQ_Excel_PeopleInfo(人员主键,地区名称,地区编码,序号,社区名称,网格名称,小区名称,楼栋名称,门牌号,姓名,性别,与户主关系,身份证号,家庭类别,人员性质,民族,户口性质,联系电话,户籍地址,户主身份证号,家庭主键,家庭编码,sRandomID)values(NEWID(),'" +
                                        sVillageName + "','" + sVillageCode + "','" + r[0] + "','" + r[1] + "','" + r[2] + "','" + r[3] + "','" + r[4] + "','" + r[5] + "','" + r[6] + "','" + r[7] + "','" + sJTGX + "','" + r[9] + "','" + r[10] + "','" + r[11] + "','" + r[12] + "','" + r[13] + "','" + r[14] + "','" + r[15] + "','" + sHouseholdIDCard + "','" + sFamilyID + "','" + sFamilyNo + "','" + sRandomID + "')";
                                SqlHelper.ExecuteSql(strSQL);
                            }
                        }

                        string strUpdateAreaSQL = "update _SQ_Excel_PeopleInfo set 省编码=sShengCode,市编码=sShiCode, 县编码=sAreaCode, 乡镇编码=sTownCode from sysArea a where 地区编码=a.sID and 地区编码='" + sVillageCode + "' and sRandomID='" + sRandomID + "'";
                        string strUpdateCodeSQL = "update _SQ_Excel_PeopleInfo set 网格编码=a.sWGCode,小区编码=a.sHomeCode,楼栋编码=a.sBuildCode from VIEW_SQ_WGHomeBuild a where _SQ_Excel_PeopleInfo.楼栋名称= a.sBuildName and _SQ_Excel_PeopleInfo.小区名称=a.sHomeName and _SQ_Excel_PeopleInfo.网格名称=a.sWGName and _SQ_Excel_PeopleInfo.社区名称=a.sName and a.sID='" + sVillageCode + "' and _SQ_Excel_PeopleInfo.地区编码='" + sVillageCode + "' and _SQ_Excel_PeopleInfo.sRandomID='" + sRandomID + "'";
                        resul = SqlHelper.ExecuteSql(strUpdateAreaSQL + strUpdateCodeSQL);
                    }
                }
                else
                {
                    resul = false;
                    Mes = "导入失败!Excel中不包含名称为“实有人口信息”的工作薄!";
                }
            }
            catch (Exception ex)
            {
                resul = false;
                Mes = "导入失败!";
            }
            finally
            {
                // 关闭连接
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                    da.Dispose();
                    conn.Dispose();
                }
            }
            OutputResult(resul, Mes);
        }

        /// <summary>
        /// 检验Excel列数据项与模板数据项是否符合
        /// </summary>
        /// <param name="dt"></param>
        /// <returns></returns>
        public bool CheckRule(DataTable dt, out string mes, string sVillageName)
        {
            mes = "";
            bool bResult = true;
            if (dt.Columns.Count != 16)
            {
                mes = "Excel模板必须为16列";
                bResult = false;
                return bResult;
            }
            int dtRows = dt.Rows.Count;
            DataRow dr = dt.Rows[0];
            string c1 = dr[0].ToString();
            string c2 = dr[1].ToString();
            string c3 = dr[2].ToString();
            string c4 = dr[3].ToString();
            string c5 = dr[4].ToString();
            string c6 = dr[5].ToString();
            string c7 = dr[6].ToString();
            string c8 = dr[7].ToString();
            string c9 = dr[8].ToString();
            string c10 = dr[9].ToString();
            string c11 = dr[10].ToString();
            string c12 = dr[11].ToString();
            string c13 = dr[12].ToString();
            string c14 = dr[13].ToString();
            string c15 = dr[14].ToString();
            string c16 = dr[15].ToString();

            if (!(c1 == "序号" && c2 == "社区名称" && c3 == "网格名称" && c4 == "小区名称" && c5 == "楼栋名称" && c6 == "门牌号" && c7 == "姓名" && c8 == "性别" && c9 == "与户主关系" && c10 == "身份证号" && c11 == "家庭类别" && c12 == "人员性质" && c13 == "民族" && c14 == "户口性质" && c15 == "联系电话" && c16 == "户籍地址"))
            {
                mes += "Excel模板第一行的标题行必须为如下顺序的标题:</br>";
                mes += "【序号】|【社区名称】|【网格名称】|【小区名称】|【楼栋名称】|【门牌号】|【姓名】|【性别】|【与户主关系】|【身份证号】|【家庭类别】|【人员性质】|【民族】|【户口性质】|【联系电话】|【户籍地址】</br>";
                bResult = false;
            }
            else
            {
                //List<string> villageNameList = new List<string>();//社区名称
                //villageNameList.Add(sVillageName);
                //for (int i = 0; i < dtRows; i++)
                //{
                //    string rowVillageName = dt.Rows[i]["社区名称"].ToString().Trim();
                //    villageNameList.Add(rowVillageName);
                //}
                //villageNameList = villageNameList.Distinct().ToList();//去除重复地区
                //if (villageNameList.Count == 1 && villageNameList[0] != sVillageName)
                //{
                //    mes += "Excel里的地区与地区控件所选地区不一致。请检验!控件地区为:" + sVillageName + "------Excel里的地区为:" + villageNameList[0];
                //    bResult = false;
                //}
                //else if (villageNameList.Count > 1)
                //{
                //    string sVillages = "";//Excel里面包含的所有社区名称
                //    foreach (string item in villageNameList)
                //    {
                //        sVillages += item + ",";
                //    }
                //    sVillages.EndsWith(",");
                //    mes += "Excel里的数据不属于同一个地区。请检验!控件地区为:" + sVillageName + "------Excel里的地区为:" + sVillages;
                //    bResult = false;
                //}
            }
            return bResult;
        }
        #endregion

        #region 数据校验
        /// <summary>
        /// 数据校验
        /// </summary>
        private void DataValidate()
        {
            bool bCheckResult = true;
            string mes = "";
            string sVillageCode = GetParam("sVillageCode");//地区控件选择的导入数据的地区---编码
            string sVillageName = GetParam("sVillageName");//地区控件选择的导入数据的地区---名称
            string sRandomID = GetParam("sRandomID");//页面导入数据标识,Guid
            string rowNum;//序号 

            string strRequireValue = "select * from dbo._SQ_Excel_PeopleInfo where sRandomID = '" + sRandomID + "' and ( 序号='' OR 社区名称='' OR 网格名称='' OR 小区名称='' OR 楼栋名称='' OR 姓名='' OR 性别='' OR 与户主关系='' OR 身份证号='' OR 家庭类别='' OR 人员性质='' OR 民族='' OR 户口性质='' )";
            DataTable dtRequireValue = SqlHelper.ExecuteSqlToTable(strRequireValue);
            for (int i = 0; i < dtRequireValue.Rows.Count; i++)
            {
                rowNum = dtRequireValue.Rows[i]["序号"].ToString().Trim();
                if (rowNum == "")//行号
                {
                    bCheckResult = false;
                    mes += "序号【" + rowNum + "】,错误说明:序号不能为空!</br>";
                }
                if (dtRequireValue.Rows[i]["社区名称"].ToString().Trim() == "")//社区名称
                {
                    bCheckResult = false;
                    mes += "序号【" + rowNum + "】,错误说明:社区名称不能为空!</br>";
                }
                if (dtRequireValue.Rows[i]["网格名称"].ToString().Trim() == "")//网格名称
                {
                    bCheckResult = false;
                    mes += "序号【" + rowNum + "】,错误说明:网格名称不能为空!</br>";
                }
                if (dtRequireValue.Rows[i]["小区名称"].ToString().Trim() == "")//小区名称
                {
                    bCheckResult = false;
                    mes += "序号【" + rowNum + "】,错误说明:小区名称不能为空!</br>";
                }
                if (dtRequireValue.Rows[i]["楼栋名称"].ToString().Trim() == "")//楼栋名称
                {
                    bCheckResult = false;
                    mes += "序号【" + rowNum + "】,错误说明:楼栋名称不能为空!</br>";
                }
                if (dtRequireValue.Rows[i]["姓名"].ToString().Trim() == "")//姓名
                {
                    bCheckResult = false;
                    mes += "序号【" + rowNum + "】,错误说明:姓名不能为空!</br>";
                }
                if (dtRequireValue.Rows[i]["性别"].ToString().Trim() == "")//性别
                {
                    bCheckResult = false;
                    mes += "序号【" + rowNum + "】,错误说明:性别不能为空!</br>";
                }
                if (dtRequireValue.Rows[i]["与户主关系"].ToString().Trim() == "")//与户主关系
                {
                    bCheckResult = false;
                    mes += "序号【" + rowNum + "】,错误说明:与户主关系不能为空!</br>";
                }
                if (dtRequireValue.Rows[i]["身份证号"].ToString().Trim() == "")//身份证号
                {
                    bCheckResult = false;
                    mes += "序号【" + rowNum + "】,错误说明:身份证号不能为空!</br>";
                }
                if (dtRequireValue.Rows[i]["家庭类别"].ToString().Trim() == "")//家庭类别
                {
                    bCheckResult = false;
                    mes += "序号【" + rowNum + "】,错误说明:家庭类别不能为空!</br>";
                }
                if (dtRequireValue.Rows[i]["人员性质"].ToString().Trim() == "")//人员性质
                {
                    bCheckResult = false;
                    mes += "序号【" + rowNum + "】,错误说明:人员性质不能为空!</br>";
                }
                if (dtRequireValue.Rows[i]["民族"].ToString().Trim() == "")//民族
                {
                    bCheckResult = false;
                    mes += "序号【" + rowNum + "】,错误说明:民族不能为空!</br>";
                }
                if (dtRequireValue.Rows[i]["户口性质"].ToString().Trim() == "")//户口性质
                {
                    bCheckResult = false;
                    mes += "序号【" + rowNum + "】,错误说明:户口性质不能为空!</br>";
                }
            }

            string strMPHValue = "select * from dbo._SQ_Excel_PeopleInfo where sRandomID = '" + sRandomID + "' and 门牌号 = '' and 与户主关系 ='本人' " + " and sRandomID='" + sRandomID + "' order by 序号";
            DataTable dtMPHValue = SqlHelper.ExecuteSqlToTable(strMPHValue);
            for (int i = 0; i < dtMPHValue.Rows.Count; i++)
            {
                bCheckResult = false;
                rowNum = dtMPHValue.Rows[i]["序号"].ToString().Trim();
                mes += "序号【" + rowNum + "】,错误说明:与户主关系为【本人】的门牌号不能为空!</br>";
            }

            string strVillageName = "select 序号,社区名称 from dbo._SQ_Excel_PeopleInfo where 社区名称 !='" + sVillageName + "' and 社区名称 !='' " + " and sRandomID='" + sRandomID + "' order by 序号"; ;
            DataTable dtVillageName = SqlHelper.ExecuteSqlToTable(strVillageName);
            for (int i = 0; i < dtVillageName.Rows.Count; i++)
            {
                bCheckResult = false;
                rowNum = dtVillageName.Rows[i]["序号"].ToString().Trim();
                mes += "序号【" + rowNum + "】,错误说明:Excel里的数据不属于同一个地区!控件地区为【" + sVillageName + "】---Excel里的地区为【" + dtVillageName.Rows[i]["社区名称"].ToString().Trim() + "】</br>";
            }

            string strWGCheck = "select 序号,网格名称 from dbo._SQ_Excel_PeopleInfo where (网格名称 not in (select distinct 网格名称 from SQ_WGInfo where sVillageCode='" + sVillageCode + "')) AND sRandomID='" + sRandomID + "' order by 序号";
            DataTable dtWG = SqlHelper.ExecuteSqlToTable(strWGCheck);
            for (int i = 0; i < dtWG.Rows.Count; i++)
            {
                bCheckResult = false;
                rowNum = dtWG.Rows[i]["序号"].ToString().Trim();
                mes += "序号【" + rowNum + "】,错误说明:人口表里有网格不在基础表之内。网格名称:【" + dtWG.Rows[i]["网格名称"].ToString() + "】<br/>";
            }

            string strHomeBuildCheck = "select 序号,网格名称,小区名称,楼栋名称,网格名称+小区名称+楼栋名称 from dbo._SQ_Excel_PeopleInfo where (网格名称+小区名称+楼栋名称 not in (select sWGName+sHomeName+sBuildName from dbo.VIEW_SQ_WGHomeBuild where sID='" + sVillageCode + "')) AND 地区编码 = '" + sVillageCode + "' and sRandomID='" + sRandomID + "' order by 序号";
            DataTable dtHomeBuild = SqlHelper.ExecuteSqlToTable(strHomeBuildCheck);
            if (dtHomeBuild.Rows.Count > 0)
            {
                for (int i = 0; i < dtHomeBuild.Rows.Count; i++)
                {
                    bCheckResult = false;
                    rowNum = dtHomeBuild.Rows[i]["序号"].ToString().Trim();
                    mes += "序号【" + rowNum + "】,错误说明:网格,小区,楼栋与基本表不对应。网格名称:【" + dtHomeBuild.Rows[i]["网格名称"].ToString() + "】---小区名称:【" + dtHomeBuild.Rows[i]["小区名称"].ToString() + "】---楼栋名称:【" + dtHomeBuild.Rows[i]["楼栋名称"].ToString() + "】<br/>";
                }
            }

            string strIDCardCheck = "select 身份证号 from dbo._SQ_Excel_PeopleInfo  WHERE  地区编码 = '" + sVillageCode + "' and sRandomID='" + sRandomID + "' group by 身份证号 having COUNT(1)>1";
            DataTable dtIDCard = SqlHelper.ExecuteSqlToTable(strIDCardCheck);
            if (dtIDCard.Rows.Count > 0)
            {
                bCheckResult = false;
                for (int i = 0; i < dtIDCard.Rows.Count; i++)
                {
                    string strRepeatIDCard = "SELECT * FROM _SQ_Excel_PeopleInfo WHERE  [地区编码] = '" + sVillageCode + "' and sRandomID='" + sRandomID + "' AND 身份证号='" + dtIDCard.Rows[i]["身份证号"] + "' order by 序号";
                    DataTable dtRepeatIDCard = SqlHelper.ExecuteSqlToTable(strRepeatIDCard);
                    for (int j = 0; j < dtRepeatIDCard.Rows.Count; j++)
                    {
                        rowNum = dtRepeatIDCard.Rows[j]["序号"].ToString().Trim();
                        mes += "序号【" + rowNum + "】,错误说明:身份证有重复!重复号码为:【" + dtRepeatIDCard.Rows[i]["身份证号"].ToString() + "】<br/>";
                    }
                }
            }

            string strIDCardLenCheck = "select 序号,身份证号,LEN(身份证号) as idLen from dbo._SQ_Excel_PeopleInfo where LEN(身份证号)!=18 and LEN(身份证号)!=15 AND 地区编码 = '" + sVillageCode + "' and sRandomID='" + sRandomID + "' order by 序号";
            DataTable dtIDCardLen = SqlHelper.ExecuteSqlToTable(strIDCardLenCheck);
            if (dtIDCardLen.Rows.Count > 0)
            {
                for (int i = 0; i < dtIDCardLen.Rows.Count; i++)
                {
                    bCheckResult = false;
                    rowNum = dtIDCardLen.Rows[i]["序号"].ToString().Trim();
                    mes += "序号【" + rowNum + "】,错误说明:身份证位数不对!号码:【" + dtIDCardLen.Rows[i]["身份证号"].ToString() + "】---位数:【" + dtIDCardLen.Rows[i]["idLen"].ToString() + "】<br/>";
                }
            }

            string strMZDictCheck = "select 序号,民族 from dbo._SQ_Excel_PeopleInfo where 民族 not in(select sValue from dbo.BaseInfo_dict where sTableCode='MZ') and 民族!='' AND 地区编码 = '" + sVillageCode + "' and sRandomID='" + sRandomID + "' order by 序号";
            DataTable dtMZDict = SqlHelper.ExecuteSqlToTable(strMZDictCheck);
            if (dtMZDict.Rows.Count > 0)
            {
                for (int i = 0; i < dtMZDict.Rows.Count; i++)
                {
                    bCheckResult = false;
                    rowNum = dtMZDict.Rows[i]["序号"].ToString().Trim();
                    mes += "序号【" + rowNum + "】,错误说明:民族字段的值不在填表说明内!值为:【" + dtMZDict.Rows[i]["民族"].ToString() + "】<br/>";
                }
            }

            string strXBDictCheck = "select 序号,性别 from dbo._SQ_Excel_PeopleInfo where 性别 not in(select sValue from dbo.BaseInfo_dict where sTableCode='XB') and 性别!='' AND 地区编码 = '" + sVillageCode + "' and sRandomID='" + sRandomID + "' order by 序号";
            DataTable dtXBDict = SqlHelper.ExecuteSqlToTable(strXBDictCheck);
            if (dtXBDict.Rows.Count > 0)
            {
                for (int i = 0; i < dtXBDict.Rows.Count; i++)
                {
                    bCheckResult = false;
                    rowNum = dtXBDict.Rows[i]["序号"].ToString().Trim();
                    mes += "序号【" + rowNum + "】,错误说明:性别字段的值不在填表说明内!值为:【" + dtXBDict.Rows[i]["性别"].ToString() + "】<br/>";
                }
            }

            string strJTGXDictCheck = "select 序号,与户主关系 from dbo._SQ_Excel_PeopleInfo where 与户主关系 not in(select sValue from dbo.BaseInfo_dict where sTableCode='JTGX') and 与户主关系!='' AND 地区编码 = '" + sVillageCode + "' and sRandomID='" + sRandomID + "' order by 序号";
            DataTable dtJTGXDict = SqlHelper.ExecuteSqlToTable(strJTGXDictCheck);
            if (dtJTGXDict.Rows.Count > 0)
            {
                for (int i = 0; i < dtJTGXDict.Rows.Count; i++)
                {
                    bCheckResult = false;
                    rowNum = dtJTGXDict.Rows[i]["序号"].ToString().Trim();
                    mes += "序号【" + rowNum + "】,错误说明:与户主关系的值不在填表说明内!值为:【" + dtJTGXDict.Rows[i]["与户主关系"].ToString() + "】<br/>";
                }
            }

            string strHJXZDictCheck = "select 序号,户口性质 from dbo._SQ_Excel_PeopleInfo where 户口性质 not in(select sValue from dbo.BaseInfo_dict where sTableCode='HJXZ') and 户口性质!='' AND 地区编码 = '" + sVillageCode + "' and sRandomID='" + sRandomID + "' order by 序号";
            DataTable dtHJXZDict = SqlHelper.ExecuteSqlToTable(strHJXZDictCheck);
            if (dtHJXZDict.Rows.Count > 0)
            {
                for (int i = 0; i < dtHJXZDict.Rows.Count; i++)
                {
                    bCheckResult = false;
                    rowNum = dtHJXZDict.Rows[i]["序号"].ToString().Trim();
                    mes += "序号【" + rowNum + "】,错误说明:户口性质的值不在填表说明内!值为:【" + dtHJXZDict.Rows[i]["户口性质"].ToString() + "】<br/>";
                }
            }

            string strRYXZDictCheck = "select 序号,人员性质 from dbo._SQ_Excel_PeopleInfo where 人员性质 not in(select sValue from dbo.BaseInfo_dict where sTableCode='RYXZ') and 人员性质!='' AND 地区编码 = '" + sVillageCode + "' and sRandomID='" + sRandomID + "' order by 序号";
            DataTable dtRYXZDict = SqlHelper.ExecuteSqlToTable(strRYXZDictCheck);
            if (dtRYXZDict.Rows.Count > 0)
            {
                for (int i = 0; i < dtRYXZDict.Rows.Count; i++)
                {
                    bCheckResult = false;
                    rowNum = dtRYXZDict.Rows[i]["序号"].ToString().Trim();
                    mes += "序号【" + rowNum + "】,错误说明:人员性质的值不在填表说明内!值为:【" + dtRYXZDict.Rows[i]["人员性质"].ToString() + "】<br/>";
                }
            }

            string strJTLBDictCheck = "select 序号,家庭类别 from dbo._SQ_Excel_PeopleInfo where 家庭类别 not in(select sValue from dbo.BaseInfo_dict where sTableCode='JTLB') and 家庭类别!='' AND 地区编码 = '" + sVillageCode + "' and sRandomID='" + sRandomID + "' order by 序号";
            DataTable dtJTLBDict = SqlHelper.ExecuteSqlToTable(strJTLBDictCheck);
            if (dtJTLBDict.Rows.Count > 0)
            {
                for (int i = 0; i < dtJTLBDict.Rows.Count; i++)
                {
                    bCheckResult = false;
                    rowNum = dtJTLBDict.Rows[i]["序号"].ToString().Trim();
                    mes += "序号【" + rowNum + "】,错误说明:家庭类别的值不在填表说明内!值为:【" + dtJTLBDict.Rows[i]["家庭类别"].ToString() + "】<br/>";
                }
            }

            string strMPHNotInFWInfo = "select 序号,门牌号,楼栋名称,小区名称 from dbo._SQ_Excel_PeopleInfo e"
                                     + " where 门牌号 not in (select sMPH from SQ_FWInfo f where e.楼栋编码=f.sBuildCode) AND 地区编码 = '" + sVillageCode + "' and sRandomID='" + sRandomID + "'  order by 序号";
            DataTable dtMPHNotInFWInfo = SqlHelper.ExecuteSqlToTable(strMPHNotInFWInfo);
            if (dtMPHNotInFWInfo.Rows.Count > 0)
            {
                for (int i = 0; i < dtMPHNotInFWInfo.Rows.Count; i++)
                {
                    bCheckResult = false;
                    rowNum = dtMPHNotInFWInfo.Rows[i]["序号"].ToString().Trim();
                    mes += "序号【" + rowNum + "】,错误说明:Excel表格里的门牌号不在生成的房屋内!小区名称:【" + dtMPHNotInFWInfo.Rows[i]["小区名称"] + "】---楼栋名称:【" + dtMPHNotInFWInfo.Rows[i]["楼栋名称"] + "】---门牌号:【" + dtMPHNotInFWInfo.Rows[i]["门牌号"] + "】<br/>";
                }
            }

            //根据身份证号,判断人员数据是否已存在。若存在,不允许重复导入
            string strExistData = "select e.* from dbo._SQ_Excel_PeopleInfo e join SQ_PeopleInfo p on e.身份证号=p.sIDCard where e.sRandomID='" + sRandomID + "' order by e.序号";
            DataTable dtExistDataInfo = SqlHelper.ExecuteSqlToTable(strExistData);
            if (dtExistDataInfo.Rows.Count > 0)
            {
                for (int i = 0; i < dtExistDataInfo.Rows.Count; i++)
                {
                    bCheckResult = false;
                    rowNum = dtExistDataInfo.Rows[i]["序号"].ToString().Trim();
                    mes += "序号【" + rowNum + "】,错误说明:人员信息已存在,不允许重复导入!姓名:【" + dtExistDataInfo.Rows[i]["姓名"] + "】---身份证号:【" + dtExistDataInfo.Rows[i]["身份证号"] + "】<br/>";
                }
            }

            if (mes == "")
            {
                mes = "数据校验成功!";
            }

            OutputResult(bCheckResult, mes);
        }
        #endregion

        #region 一键导入家庭人口信息
        /// <summary>
        /// 一键导入家庭人口信息
        /// </summary>
        private void IntelligentImPort()
        {
            bool bInitResult = true;
            string mes = "家庭人口信息生成成功!";

            string sImportVillageCode = GetParam("sVillageCode");//社区编码 
            string sImportVillageName = GetParam("sVillageName");//地区控件选择的导入数据的地区---名称
            string sRandomID = GetParam("sRandomID");//页面导入数据标识,Guid

            List<string> sqlList = new List<string>();//执行语句
            List<SqlParameter[]> paraList = new List<SqlParameter[]>();//执行语句相对应的参数

            #region 导入家庭人口信息
            string strPeopleSQL = "select * from _SQ_Excel_PeopleInfo where sRandomID='" + sRandomID + "' order by 网格编码";
            DataTable dtPeople = SqlHelper.ExecuteSqlToTable(strPeopleSQL);

            string strInsertFamilySQL = "insert into SQ_FamilyInfo(gID,sFamilyNo,sVillageCode,sFamilyFkDZ,sLBCode,iFlag,iDeleteMark,iSort,dCreateDate,sCreateUserRealname,MPHCode,iFL,sAreaCode,sTownCode,sHomeCode,sBuildCode,sWGCode,sShiCode,sShengCode) " +
                "values(@sFamilyKey,@sFamilyNo,@sVillageCode,@sHKDZ,@sLBCode,1,0,0,getdate(),'数据导入',@sMPH,0,@sAreaCode,@sTownCode,@sHomeCode,@sBuildCode,@sWGCode,@sShiCode,@sShengCode)";
            string strInsertPeopleSQL = "insert into SQ_PeopleInfo(gID,gFamliyID,sFamilyNo,sFamilyGX,sPeopName,sPeopNo,iBdhj,sIDCard,sSex,sNation,sLXDH,sHKXZ,sHJDZ,iSW,iRYXZ,iDeleteMark,iSort,dCreateDate,sCreateUserRealname,sAreaCode,sVillageCode,sTownCode,sHomeCode,sBuildCode,sWGCode,MPHCode,iZXState,sShiCode,sShengCode,dDate) " +
                "values(NEWID(),@gPFamliyID,@sPFamilyNo,@sFamilyGX,@sPeopName,@sPeopNo,1,@sIDCard,@sSex,@sNation,@sLXDH,@sHKXZ,@sHJDZ,0,@iRYXZ,0,0,getdate(),'数据导入',@sAreaCode,@sPVillageCode,@sTownCode,@sHomeCode,@sBuildCode,@sWGCode,@MPHCode,0,@sShiCode,@sShengCode,@dPeopleDate)";

            int iPeopleRows = dtPeople.Rows.Count;
            for (int i = 0; i < iPeopleRows; i++)
            {
                string gPFamliyID = dtPeople.Rows[i]["家庭主键"].ToString();//家庭表主键
                string sPFamilyNo = dtPeople.Rows[i]["家庭编码"].ToString();//家庭表编码
                string sFamilyGX = GetDictCode("JTGX", dtPeople.Rows[i]["与户主关系"].ToString());//与户主关系
                string sPeopName = dtPeople.Rows[i]["姓名"].ToString();//姓名
                string sPeopNo = Guid.NewGuid().ToString().ToUpper();//人员编号
                string sIDCard = dtPeople.Rows[i]["身份证号"].ToString();//身份证号
                string sSex = GetDictCode("XB", dtPeople.Rows[i]["性别"].ToString());//性别
                string sNation = GetDictCode("MZ", dtPeople.Rows[i]["民族"].ToString());//民族
                string sLXDH = dtPeople.Rows[i]["联系电话"].ToString(); //联系电话
                string sHKXZ = GetDictCode("HJXZ", dtPeople.Rows[i]["户口性质"].ToString());//户口性质
                string sHJDZ = dtPeople.Rows[i]["户籍地址"].ToString(); //户籍地址
                string iRYXZ = GetDictCode("RYXZ", dtPeople.Rows[i]["人员性质"].ToString());//人员性质
                string sAreaCode = dtPeople.Rows[i]["县编码"].ToString();//县区编码
                string sPVillageCode = dtPeople.Rows[i]["地区编码"].ToString();//居委村编码
                string sTownCode = dtPeople.Rows[i]["乡镇编码"].ToString();//乡镇编码
                string sHomeCode = dtPeople.Rows[i]["小区编码"].ToString();//小区编码
                string sBuildCode = dtPeople.Rows[i]["楼栋编码"].ToString();//楼栋编码
                string sWGCode = dtPeople.Rows[i]["网格编码"].ToString();//网格编码
                string MPHCode = dtPeople.Rows[i]["门牌号"].ToString();//门牌号
                string sShiCode = dtPeople.Rows[i]["市编码"].ToString();//市编码
                string sShengCode = dtPeople.Rows[i]["省编码"].ToString();//省编码
                DateTime? dPeopleDate = null;//出生日期
                DateTime dTemp = GetDateFromIDCard(sIDCard);//
                if (dTemp.ToString() != "1900-01-01")
                {
                    dPeopleDate = dTemp;
                }
                sqlList.Add(strInsertPeopleSQL);
                paraList.Add(new SqlParameter[]{
                        new SqlParameter("@gPFamliyID",gPFamliyID),
                        new SqlParameter("@sPFamilyNo",sPFamilyNo),
                        new SqlParameter("@sFamilyGX",sFamilyGX),
                        new SqlParameter("@sPeopName",sPeopName),
                        new SqlParameter("@sPeopNo",sPeopNo),
                        new SqlParameter("@sIDCard",sIDCard),
                        new SqlParameter("@sSex",sSex),
                        new SqlParameter("@sNation",sNation),
                        new SqlParameter("@sLXDH",sLXDH),
                        new SqlParameter("@sHKXZ",sHKXZ),
                        new SqlParameter("@sHJDZ",sHJDZ),
                        new SqlParameter("@iRYXZ",iRYXZ),
                        new SqlParameter("@sAreaCode",sAreaCode),
                        new SqlParameter("@sPVillageCode",sPVillageCode),
                        new SqlParameter("@sTownCode",sTownCode),
                        new SqlParameter("@sHomeCode",sHomeCode),
                        new SqlParameter("@sBuildCode",sBuildCode),
                        new SqlParameter("@sWGCode",sWGCode),
                        new SqlParameter("@MPHCode",MPHCode),
                        new SqlParameter("@sShiCode",sShiCode),
                        new SqlParameter("@sShengCode",sShengCode),
                        new SqlParameter("@dPeopleDate",dPeopleDate)
                });
            }


            for (int i = 0; i < iPeopleRows; i++)
            {
                if (dtPeople.Rows[i]["与户主关系"].ToString() == "本人")
                {
                    string sFamilyKey = dtPeople.Rows[i]["家庭主键"].ToString();//家庭表主键
                    string sFamilyNo = dtPeople.Rows[i]["家庭编码"].ToString();//家庭编号 
                    string sVillageCode = dtPeople.Rows[i]["地区编码"].ToString();//地区编码 
                    string sHKDZ = dtPeople.Rows[i]["户籍地址"].ToString();//户口地址
                    string sLBCode = GetDictCode("JTLB", dtPeople.Rows[i]["家庭类别"].ToString());//家庭类别
                    string sMPH = dtPeople.Rows[i]["门牌号"].ToString();   //门牌号
                    string sAreaCode = dtPeople.Rows[i]["县编码"].ToString();//县区编码
                    string sTownCode = dtPeople.Rows[i]["乡镇编码"].ToString();//乡镇编码
                    string sHomeCode = dtPeople.Rows[i]["小区编码"].ToString();//小区编码
                    string sBuildCode = dtPeople.Rows[i]["楼栋编码"].ToString();//楼栋编码
                    string sWGCode = dtPeople.Rows[i]["网格编码"].ToString();//网格编码
                    string sShiCode = dtPeople.Rows[i]["市编码"].ToString();//市编码
                    string sShengCode = dtPeople.Rows[i]["省编码"].ToString();//省编码
                    sqlList.Add(strInsertFamilySQL);
                    paraList.Add(new SqlParameter[]{
                            new SqlParameter("@sFamilyKey",sFamilyKey),
                            new SqlParameter("@sFamilyNo",sFamilyNo),
                            new SqlParameter("@sVillageCode",sVillageCode),
                            new SqlParameter("@sHKDZ",sHKDZ),
                            new SqlParameter("@sLBCode",sLBCode),
                            new SqlParameter("@sMPH",sMPH),
                            new SqlParameter("@sAreaCode",sAreaCode),
                            new SqlParameter("@sTownCode",sTownCode),
                            new SqlParameter("@sHomeCode",sHomeCode),
                            new SqlParameter("@sBuildCode",sBuildCode),
                            new SqlParameter("@sWGCode",sWGCode),
                            new SqlParameter("@sShiCode",sShiCode),
                            new SqlParameter("@sShengCode",sShengCode),
                    });

                    string strSelectPeople = "select gID,sPeopName,sIDCard,sFamilyGX from sq_PeopleInfo where gFamliyID='" + sFamilyKey + "' and iDeleteMark=0  ORDER BY sFamilyGX ";
                    DataTable dtPeoInFamily = SqlHelper.ExecuteSqlToTable(strSelectPeople);

                    string strPeopleNames = "";
                    string strIDCards = "";
                    for (int m = 0; m < dtPeoInFamily.Rows.Count; m++)
                    {
                        if (dtPeoInFamily.Rows[m]["sFamilyGX"].ToString() == "01")//如果是户主
                        {
                            strPeopleNames = dtPeoInFamily.Rows[m]["sPeopName"].ToString() + "," + strPeopleNames;
                            strIDCards = "," + dtPeoInFamily.Rows[m]["sIDCard"].ToString() + "," + strIDCards;
                        }
                        else
                        {
                            strPeopleNames += dtPeoInFamily.Rows[m]["sPeopName"].ToString() + ",";
                            strIDCards += "," + dtPeoInFamily.Rows[m]["sIDCard"].ToString() + ",";
                        }
                    }
                    int PeoInFamilyCount = dtPeoInFamily.Rows.Count;//家庭人口数
                    string strUpdateFamily = "update SQ_FamilyInfo set Peoples=@strPeopleNames, IDCards=@strIDCards, iJTRKS=@PeoInFamilyCount where gID=@sFamilyKey";

                    sqlList.Add(strUpdateFamily);
                    paraList.Add(new SqlParameter[]{
                            new SqlParameter("@strPeopleNames",strPeopleNames),
                            new SqlParameter("@strIDCards",strIDCards),
                            new SqlParameter("@PeoInFamilyCount",PeoInFamilyCount),
                            new SqlParameter("@sFamilyKey",sFamilyKey)
                    });
                }
            }

            string strUpdateFamilyMPH = "update SQ_FamilyInfo set MPHCode=f.MPHCode from SQ_FWInfo f,_SQ_Excel_PeopleInfo p where SQ_FamilyInfo.MPHCode=f.sMPH and SQ_FamilyInfo.sBuildCode=f.sBuildCode and SQ_FamilyInfo.sVillageCode=p.地区编码  and p.sRandomID=@sRandomID ";
            //更新字典项名称----性别名称,民族名称,与户主关系名称
            strUpdateFamilyMPH += "update SQ_PeopleInfo set sSexName=d.sValue from dbo.BaseInfo_dict d, _SQ_Excel_PeopleInfo p where SQ_PeopleInfo.sSex=d.sCode and d.sTableCode='XB' and SQ_PeopleInfo.sVillageCode=p.地区编码 and p.sRandomID=@sRandomID ";
            strUpdateFamilyMPH += "update SQ_PeopleInfo set sNationName=d.sValue from dbo.BaseInfo_dict d, _SQ_Excel_PeopleInfo p where SQ_PeopleInfo.sNation=d.sCode and d.sTableCode='MZ' and SQ_PeopleInfo.sVillageCode=p.地区编码 and p.sRandomID=@sRandomID ";
            strUpdateFamilyMPH += "update SQ_PeopleInfo set sFamilyGXName=d.sValue from dbo.BaseInfo_dict d, _SQ_Excel_PeopleInfo p where SQ_PeopleInfo.sFamilyGX=d.sCode and d.sTableCode='JTGX' and SQ_PeopleInfo.sVillageCode=p.地区编码 and p.sRandomID=@sRandomID ";

            sqlList.Add(strUpdateFamilyMPH);
            paraList.Add(new SqlParameter[] { 
                    new SqlParameter("@sRandomID",sRandomID)
            });

            #region 记录数据导入日志
            string strInsertLog = "insert into _SQ_DataImportLog(sID,sVillageCode,sVillageName,iType,sUpLoadUserLoginName,sUpLoadUserRealName,dUpLoadDate)" +
                                  " values(NEWID(),@sImportVillageCode,@sImportVillageName,2,@sUserName,@sRealName,getdate())";

            string sUserName = GetSessionCurrentUserInfo.sUserName;//用户登陆名
            string sRealName = GetSessionCurrentUserInfo.sRealName;//用户姓名
            sqlList.Add(strInsertLog);
            paraList.Add(new SqlParameter[] { 
                    new SqlParameter("@sImportVillageCode",sImportVillageCode),
                    new SqlParameter("@sImportVillageName",sImportVillageName),
                    new SqlParameter("@sUserName",sUserName),
                    new SqlParameter("@sRealName",sRealName),
            });

            #endregion

            #endregion
            try
            {
                bInitResult = SqlHelper.ExecuteTrans(sqlList, paraList);
            }
            catch (Exception)
            {
                bInitResult = false;
                mes = "家庭人口信息生成失败!";
                throw;
            }
            OutputResult(bInitResult, mes);
        }

        /// <summary>
        /// 根据字典名称获取字典编码 
        /// </summary>
        /// <param name="tablecode"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        private string GetDictCode(string tablecode, string name)
        {
            string sql = "select top 1 scode from baseinfo_dict where sname='" + name + "' and stablecode='" + tablecode + "' and ideletemark=0 and iuse=1";
            var obj = SqlHelper.ExecuteScalar(sql);
            if (obj == null)
                return "";
            return obj.ToString();

        }

        /// <summary>
        /// 身份证号转换日期
        /// </summary>
        /// <param name="sIDCard"></param>
        /// <returns></returns>
        private DateTime GetDateFromIDCard(string sIDCard)
        {
            sIDCard = sIDCard.Trim();
            if (!string.IsNullOrEmpty(sIDCard))
            {
                string tmp = "";
                DateTime dResult = DateTime.Parse("1900-01-01");
                if (sIDCard.StartsWith("R") || sIDCard.StartsWith("r"))
                {
                    return dResult;
                }
                if (sIDCard.Length == 18)
                {
                    tmp = sIDCard.Substring(6, 8);//截取生日信息
                    tmp = tmp.Insert(4, "-").Insert(7, "-");//在字符串相应位置插入字符
                }
                else if (sIDCard.Length == 15)
                {
                    //15位身份证号码
                    tmp = sIDCard.Substring(6, 2);
                    if (int.Parse(tmp) < 10)
                        tmp = "20" + tmp;
                    else
                        tmp = "19" + tmp;
                    tmp = tmp + '-' + sIDCard.Substring(8, 2) + '-' + sIDCard.Substring(10, 2);
                }
                if (DateTime.TryParse(tmp, out dResult))
                {
                    return dResult;
                }
            }
            return DateTime.Parse("1900-01-01");
        }

        #endregion
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值