基本信息
源码名称:解析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();
}
}
}
}