挽弓如月

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
    .cs
 按钮事件:
            string sbHtmltext = WBdata.DocumentText;//获取所有页面元素
            GetColomnNumAndName(sbHtmltext);//获取栏目
            GetValue(sbHtmltext);//获取数据
            try
            {
                if (dt != null && dt.Rows.Count > 0)//判断数据源是否为空
                {
                    string descTableName = "result_南京_" + txttablename.Text.Trim();
                    string str = bll.SourceExcel_Import_Web(descTableName, dt);
                    dt.Reset();//重置数据容器DataTable
                    MessageBox.Show(str);
                    HtmlDocument document = this.WBdata.Document;//自动下拉网页到底部
                    document.Window.ScrollTo(750, 1000);
                }
                else
                {
                    MessageBox.Show("未采集到数据!");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
   /// <summary>
        /// 获取列名
        /// </summary>
        /// <param name="sbHtmltext"></param>
        public void GetColomnNumAndName(string sbHtmltext)
        {
 
            int i = 0;
            for (i = 0; ; i++)
            {
                string ColomnName = "";
                string StartColoumnName = @"<th scope=""col"">";
                string EndColoumnName = "</th>";
                int StartColoumnNameIndex = sbHtmltext.IndexOf(StartColoumnName);
                if (StartColoumnNameIndex >-1)//判断元素中是否存在数据
                {
                    int EndColoumnNameIndex = sbHtmltext.IndexOf(EndColoumnName);
                    int longs = EndColoumnNameIndex - StartColoumnNameIndex - StartColoumnName.Length;
                    ColomnName = sbHtmltext.Substring(StartColoumnNameIndex + StartColoumnName.Length, longs);
                    dt.Columns.Add(ColomnName.ToString().Trim());//将表格栏目添入DataTable的Columns中
                    sbHtmltext = sbHtmltext.Remove(0, (EndColoumnNameIndex + EndColoumnName.Length));
                }
                else
                {
                    break;
                }
            }
 
        }
        /// <summary>
        /// 获取数据
        /// </summary>
        /// <param name="sbHtmltext"></param>
        public void GetValue(string sbHtmltext)
        {
 
            string StartColoumnName = @"<table cellspacing=""0"" rules=""all"" border=""1"" id=""ctl00_ContentPlaceHolder1_gvChanpin"" style=""border-collapse:collapse;"">";
            string EndColoumnName = @"<td colspan=""14""><table border=""0"">";
            string StartValue = "<td>";
            string EndValue = "</td>";
            int StartColoumnNameIndex = sbHtmltext.IndexOf(StartColoumnName);
            int EndColoumnNameIndex = sbHtmltext.IndexOf(EndColoumnName);
            int longs = EndColoumnNameIndex - StartColoumnNameIndex - StartColoumnName.Length;
            string sbHtmltextChild = sbHtmltext.Substring(StartColoumnNameIndex + StartColoumnName.Length, longs);//剔除不包含数据的上下元素
            for (int i = 0; ; i++)
            {
                string Value = "";
                int StartChild = sbHtmltextChild.IndexOf(StartValue);
                if (StartChild > -1)//判断元素中是否存在数据
                {
                    DataRow dr = dt.NewRow();//新建一行
                    for (int j = 0; ; j++)
                    {
                        int StartValueIndex = sbHtmltextChild.IndexOf(StartValue);
                        if (StartValueIndex > -1 && StartValueIndex != 18)//判断元素中是否存在数据
                        {
                            int EndValueIndex = sbHtmltextChild.IndexOf(EndValue);
                            int longsChild = EndValueIndex - StartValueIndex - StartValue.Length;
                            Value = sbHtmltextChild.Substring(StartValueIndex + StartValue.Length, longsChild).Replace("\r\n", "").Replace("\t", "").Replace("\"", """).Trim();
                            dr[j] = Value.ToString().Trim();//将数据添入新建的一行中
                            sbHtmltextChild = sbHtmltextChild.Remove(0, (EndValueIndex + EndValue.Length));//剔除已经含有录入完数据的元素
                        }
                        else
                        {
                            break;
                        }
                    }
                    dt.Rows.Add(dr);
                    int removelen = sbHtmltextChild.IndexOf(StartValue);
                    if (removelen > -1)//判断所剩元素中是否还有数据
                    {
                        sbHtmltextChild = sbHtmltextChild.Remove(0, removelen);//剔除所剩元素中头部无效元素
                    }
                }
                else
                {
                    break;
                }
            }
        }
 
.DAL 
       /// <summary>
        /// 导入数据
        /// </summary>
        /// <param name="descTableName"></param>
        /// <param name="dtSource"></param>
        /// <returns></returns>
        public string SourceExcel_Import_Web(string descTableName, DataTable dtSource)
        {
            string succ = "";
            try
            {
                string column = "";
                for (int i = 0; i < dtSource.Columns.Count; i++)
                {
                    if (i == 0)
                    {
                        column += dtSource.Columns[i].ColumnName + " varchar(max)";
                    }
                    else
                    {
                        column += "," + dtSource.Columns[i].ColumnName + " varchar(max)";
                    }
                }
                string strsql = "if not  exists(select * from sysobjects where name='" + descTableName + "') begin create table " + descTableName + "(" + column + ") end";
                HZ.Data.DbHelperFactory.Create(connectWeb).ExecuteNonQuery(strsql);
                SqlBulkCopyOptions sqlBulkCopyOptions;
                sqlBulkCopyOptions = SqlBulkCopyOptions.FireTriggers;
                SqlBulkCopy DTS = new System.Data.SqlClient.SqlBulkCopy(connectWeb, sqlBulkCopyOptions);
                DTS.NotifyAfter = 1;
                DTS.DestinationTableName = descTableName;
                DTS.BulkCopyTimeout = 60000000;
                DTS.WriteToServer(dtSource);
                succ = "导入成功!" + dtSource.Rows.Count + "条数据";
            }
            catch (Exception ex)
            {
                succ = ex.Message;
            }
            return succ;
        }
posted on 2013-03-18 09:57  挽弓如月  阅读(518)  评论(0)    收藏  举报