基本信息
源码名称:解析HTML文件并插入数据库保存起来
源码大小:0.10M
文件格式:.rar
开发语言:C#
更新时间:2018-07-17
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.IO; using System.Threading.Tasks; using System.Windows.Forms; using System.Web; using System.Net; using System.Text.RegularExpressions;//正则表达式 using System.Data.SqlClient; namespace HTML_Read_30_Aug { public partial class Form1 : Form { public Form1() { InitializeComponent(); } #region 定义FMC文件变量 public string Programname = string.Empty; public string Processtime = string.Empty; public string Endtime = string.Empty; public string Processdate = string.Empty; public string Filename = string.Empty; #endregion #region Public Function public static string GetHtmlStr(string url, string encoding) { string htmlStr = ""; try { if (!String.IsNullOrEmpty(url)) { WebRequest request = WebRequest.Create(url); //实例化WebRequest对象 WebResponse response = request.GetResponse(); //创建WebResponse对象 Stream datastream = response.GetResponseStream(); //创建流对象 Encoding ec = Encoding.Default; if (encoding == "UTF8") { ec = Encoding.UTF8; } else if (encoding == "Default") { ec = Encoding.Default; } StreamReader reader = new StreamReader(datastream, ec); htmlStr = reader.ReadToEnd(); //读取网页内容 reader.Close(); datastream.Close(); response.Close(); } } catch { } return htmlStr; } public static void WriteLogRecord() { StreamWriter write = null; //string time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); //年-月-日 时:分:秒 string LogName = "Record.log";//日志名称 string LogPath = System.Windows.Forms.Application.StartupPath "//Record//";//日志存放路径 string Log = LogPath LogName;//路径 名称 if (!File.Exists(Log))//是否存在 { Directory.CreateDirectory(LogPath);//创建文件夹 write = File.CreateText(LogName);// 创建日志 } else { write = File.AppendText(Log);//追加,添加错误信息 } //TimeSpan ts = EndTime.Subtract(StartTime); //write.WriteLine(EndTime.ToString("yyyy-MM-dd HH:mm:ss")); //write.WriteLine("系统开始运行时间:" StartTime.ToString()); //write.WriteLine("系统结束运行时间:" EndTime.ToString()); //rite.WriteLine("系统总运行时间:" ts.ToString()); write.WriteLine(GetHtmlStr(@"C:\Users\lucaslau\Desktop\HTML读取\WORK_070717.htm", "Default")); write.WriteLine("\r\n#########################################"); write.Flush(); //write.Close(); write.Dispose(); } public bool Check_BIMA_IE_Data_Date(string UploadFileName) { SqlConnection cnn = new SqlConnection(); cnn.ConnectionString = "Data Source = 172.23.134.36; uid = 3tec; pwd =lager; database = Edgeband_Program"; cnn.Open(); string sql = string.Empty; sql = sql "SELECT [File_Name] FROM [Edgeband_Program].[dbo].[BIMA_Machine_Time_Data](NOLOCK) WHERE [File_Name] = '" UploadFileName "'"; // MessageBox.Show(sql); SqlCommand cmd1 = new SqlCommand(sql, cnn); SqlDataAdapter da = new SqlDataAdapter();//SqlDataAdapter从数据库中获取数据,并将其存储在DataSet中 da.SelectCommand = cmd1; DataSet ds1 = new DataSet(); da.Fill(ds1); int i = cmd1.ExecuteNonQuery(); //执行并返回受影响的行数 if (ds1.Tables[0].Rows.Count != 0) { cnn.Close(); return true; } else { //MessageBox.Show( "BIMA文件: " UploadFileName "已经存在数据库中!", "提醒"); cnn.Close(); return false; } } #endregion private void Form1_Load(object sender, EventArgs e) { //MessageBox.Show(GetHtmlStr(@"C:\Users\lucaslau\Desktop\HTML读取\WORK_070717.htm", "UTF8")); //this.listBox1.Items.Add(GetHtmlStr(@"C:\Users\lucaslau\Desktop\HTML读取\WORK_070717.htm", "UTF8")); //WriteLogRecord(); //1.将Form属性ShowInTaskbar改为false,这样程序将不会在任务栏中显示。 //2.将Form属性WindowState选择为 Minimized,以便起来自动最小化隐藏。 string startup = Application.ExecutablePath; //取得程序路径 int pp = startup.LastIndexOf("\\"); startup = startup.Substring(0, pp); string icon = startup "\\auto.ico"; //3.一定为notifyIcon1其设置图标,否则无法显示在通知栏。或者在其属性中设置 notifyIcon1.Icon = new Icon(icon); } #region 定义委托 //define a delegate private delegate void testDelegate(string str); //define a method which match the above delegae private void testMethod(string str) { // query the control's(here is lstResults) InvokeRequired if (this.lsInfo.InvokeRequired) { //instansiate a delegate with the method testDelegate myDelegate = new testDelegate(testMethod); //Invoke delegate this.lsInfo.Invoke(myDelegate, str); } else { //InvokedRequired is false, so call the control directly this.lsInfo.Items.Add(str); } } #endregion private void AutoInsertData() { int start = 0; int end = 0; int recordnum = 0; List<string> P_name = new List<string>(); List<string> P_time = new List<string>(); List<string> E_time = new List<string>(); List<string> P_date = new List<string>(); //获取M:\MES\Machine\BIMA当天的文件 string strDate = DateTime.Now.ToString("yyyyMMdd"); string path = @"M:\MES\Machine\BIMA\" strDate "1520"; if (!Directory.Exists(path)) { this.testMethod(DateTime.Now.ToString() " 文件夹【" path "】不存在!!!!"); return; } DirectoryInfo fileName = new DirectoryInfo(path); FileInfo[] fileInfo = fileName.GetFiles(); foreach (FileInfo NextFile in fileInfo) { Filename = NextFile.Name; string fullpath = path @"\" Filename; //str.Add(a); //判断数据库是否已经存在 string sqlGetFileName = @"SELECT [File_Name] FROM [Edgeband_Program].[dbo].[BIMA_Machine_Time_Data](NOLOCK) WHERE [File_Name] = '" Filename "'"; if (DataBaseHelper.GetDataSet(sqlGetFileName).Tables[0].Rows.Count <= 0) { string[] str = System.IO.File.ReadAllLines(fullpath); for (int i = 0; i < str.Length; i ) { List<string> CL = new List<string>(); CL.Add("<tbody>"); CL.Add("</tbody>"); string[] strcl = CL.ToArray(); for (int j = 0; j < strcl.Length; j ) { int len = strcl[j].Length; #region 获取起始终点位置 MatchCollection mc = Regex.Matches(str[i], strcl[j]); foreach (Match m in mc) { if (strcl[j].ToString() == "<tbody>") { start = i; } if (strcl[j].ToString() == "</tbody>") { end = i; } } #endregion } } recordnum = (end - 3 - start - 8) / 7; for (int l = 0; l < recordnum; l ) { Programname = str[start 10 7 * l].ToString().Remove(0, 26).ToString(); Programname = Programname.Substring(0, Programname.Length - 5); P_name.Add(Programname); //MessageBox.Show(Programname); Processtime = str[start 11 7 * l].ToString().Remove(0, 11).ToString(); Processtime = Processtime.Substring(0, Processtime.Length - 5); P_time.Add(Processtime); //MessageBox.Show(Processtime); Endtime = str[start 12 7 * l].ToString().Remove(0, 11).ToString(); Endtime = Endtime.Substring(0, Endtime.Length - 5); E_time.Add(Endtime); //MessageBox.Show(Endtime); Processdate = str[start 13 7 * l].ToString().Remove(0, 11).ToString(); Processdate = Processdate.Substring(0, Processdate.Length - 5); P_date.Add(Processdate); //MessageBox.Show(Processdate); } for (int m = 0; m < recordnum; m ) { #region Insert Data SqlConnection cnn = new SqlConnection(); cnn.ConnectionString = "Data Source = 172.23.134.36; uid = 3tec; pwd =lager; database = Edgeband_Program"; //cnn.ConnectionString = "Data Source = (local); uid = sa; pwd =123; database = Edgeband_Program"; cnn.Open(); string sql = string.Empty; sql = sql "INSERT INTO dbo.BIMA_Machine_Time_Data(Insert_Time,File_Name,Program_Name,Process_Time,End_Time,Process_Date) VALUES(" "GETDATE()" ","; sql = sql "N'" Filename "',N'" P_name[m].ToString() "',N'" P_time[m].ToString() "',N'" E_time[m].ToString() "',N'" P_date[m].ToString() "')"; //MessageBox.Show(sql); SqlCommand cmd1 = new SqlCommand(sql, cnn); //新建命令,SqlCommand类的属性包括SelectCommand、InsertCommand、UpdateCommand、DeleteCommand分别对应数据库的查询、插入、更新和删除操作。 int Exec = cmd1.ExecuteNonQuery(); //执行并返回受影响的行数 if (Exec != 0) { cnn.Close(); } else { //lsInfo.Items.Add(DateTime.Now.ToString() " 文件【" Filename "】 The Data Error,pls Check your Input"); this.testMethod(DateTime.Now.ToString() " 文件【" Filename "】 The Data Error,pls Check your Input"); } #endregion } // lsInfo.Items.Add(DateTime.Now.ToString() " 文件【" Filename "】 已成功上传" recordnum.ToString() "条记录。"); this.testMethod(DateTime.Now.ToString() " 文件【" Filename "】 已成功上传" recordnum.ToString() "条记录。"); } else { //lsInfo.Items.Add(DateTime.Now.ToString() " 文件【" Filename "】 文件已存在!!!!"); this.testMethod(DateTime.Now.ToString() " 文件【" Filename "】 文件已存在!!!!"); } } } private void 手动上传ToolStripMenuItem_Click(object sender, EventArgs e) { int start = 0; int end = 0; int recordnum = 0; string sqlGetFileName = ""; List<string> P_name = new List<string>(); List<string> P_time = new List<string>(); List<string> E_time = new List<string>(); List<string> P_date = new List<string>(); OpenFileDialog file1 = new OpenFileDialog();//定义新的文件打开位置控件 //file1.InitialDirectory = @"C:\Users\lucaslau\Desktop\HTML读取\"; //file1.InitialDirectory = @"C:\Users\BillLUO\Desktop\"; //file1.Filter = "任意文件|*.*"; file1.Filter = "网页格式文件|*.htm";//设置文件后缀的过滤 //file1.d if (file1.ShowDialog() == DialogResult.OK)//如果有选择打开文件 { StreamReader sr = File.OpenText(file1.FileName);//创建文件流对象,读取打开的文件 string fullpath = file1.FileName; Filename = file1.FileName.Substring(file1.FileName.LastIndexOf("\\") 1); //MessageBox.Show(file1.FileName.Substring(file1.FileName.LastIndexOf("\\") 1)); //判断数据库是否已经存在 sqlGetFileName = @"SELECT [File_Name] FROM [Edgeband_Program].[dbo].[BIMA_Machine_Time_Data](NOLOCK) WHERE [File_Name] = '" Filename "'"; if (DataBaseHelper.GetDataSet(sqlGetFileName).Tables[0].Rows.Count > 0) { MessageBox.Show("Error,The Data has areadly existed"); return; } if (File.Exists(fullpath)) { string[] str = System.IO.File.ReadAllLines(fullpath); for (int i = 0; i < str.Length; i ) { List<string> CL = new List<string>(); CL.Add("<tbody>"); CL.Add("</tbody>"); string[] strcl = CL.ToArray(); for (int j = 0; j < strcl.Length; j ) { int len = strcl[j].Length; #region 获取起始终点位置 MatchCollection mc = Regex.Matches(str[i], strcl[j]); foreach (Match m in mc) { if (strcl[j].ToString() == "<tbody>") { start = i; } if (strcl[j].ToString() == "</tbody>") { end = i; } } #endregion } } recordnum = (end - 3 - start - 8) / 7; for (int l = 0; l < recordnum; l ) { Programname = str[start 10 7 * l].ToString().Remove(0, 26).ToString(); Programname = Programname.Substring(0, Programname.Length - 5); P_name.Add(Programname); //MessageBox.Show(Programname); Processtime = str[start 11 7 * l].ToString().Remove(0, 11).ToString(); Processtime = Processtime.Substring(0, Processtime.Length - 5); P_time.Add(Processtime); //MessageBox.Show(Processtime); Endtime = str[start 12 7 * l].ToString().Remove(0, 11).ToString(); Endtime = Endtime.Substring(0, Endtime.Length - 5); E_time.Add(Endtime); //MessageBox.Show(Endtime); Processdate = str[start 13 7 * l].ToString().Remove(0, 11).ToString(); Processdate = Processdate.Substring(0, Processdate.Length - 5); P_date.Add(Processdate); //MessageBox.Show(Processdate); } for (int m = 0; m < recordnum; m ) { #region Insert Data SqlConnection cnn = new SqlConnection(); cnn.ConnectionString = "Data Source = 172.23.134.36; uid = 3tec; pwd =lager; database = Edgeband_Program"; //cnn.ConnectionString = "Data Source = (local); uid = sa; pwd =123; database = Edgeband_Program"; cnn.Open(); string sql = string.Empty; sql = sql "INSERT INTO dbo.BIMA_Machine_Time_Data(Insert_Time,File_Name,Program_Name,Process_Time,End_Time,Process_Date) VALUES(" "GETDATE()" ","; sql = sql "N'" Filename "',N'" P_name[m].ToString() "',N'" P_time[m].ToString() "',N'" E_time[m].ToString() "',N'" P_date[m].ToString() "')"; //MessageBox.Show(sql); SqlCommand cmd1 = new SqlCommand(sql, cnn); //新建命令,SqlCommand类的属性包括SelectCommand、InsertCommand、UpdateCommand、DeleteCommand分别对应数据库的查询、插入、更新和删除操作。 int Exec = cmd1.ExecuteNonQuery(); //执行并返回受影响的行数 if (Exec != 0) { cnn.Close(); } else { MessageBox.Show("Error, pls Check your Input", "Reminder"); } #endregion } MessageBox.Show("已成功上传记录" recordnum.ToString() "条。"); } } } private void timer1_Tick(object sender, EventArgs e) { AutoInsertData(); } private void 清空列表ToolStripMenuItem_Click(object sender, EventArgs e) { lsInfo.Items.Clear(); } private void 手动批量上传ToolStripMenuItem_Click(object sender, EventArgs e) { AutoInsertData(); } private void exitMenuItem_Click(object sender, EventArgs e) { if (MessageBox.Show("你确定要退出程序吗?", "确认", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.OK) { notifyIcon1.Visible = false; this.Close(); this.Dispose(); Application.Exit(); } } private void showMenuItem_Click(object sender, EventArgs e) { this.StartPosition = FormStartPosition.CenterScreen; this.WindowState = FormWindowState.Normal; this.Show(); this.Activate(); } private void hideMenuItem_Click(object sender, EventArgs e) { this.Hide(); } private void Form1_SizeChanged(object sender, EventArgs e) { if (this.WindowState == FormWindowState.Minimized) { this.Hide(); //或者是this.Visible = false; this.notifyIcon1.Visible = true; } } //三 转到窗体设计模式,右击notifyIcon1 ,选择属性,双击其中DoubleClick,添加相关代码 private void notifyIcon1_DoubleClick(object sender, EventArgs e) { if (this.WindowState == FormWindowState.Normal) { this.WindowState = FormWindowState.Minimized; this.Hide(); } else if (this.WindowState == FormWindowState.Minimized) { this.Show(); this.WindowState = FormWindowState.Normal; this.Activate(); } } } }