实例介绍
【实例简介】
【实例截图】
【核心代码】
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();
}
}
}
}
好例子网口号:伸出你的我的手 — 分享!
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论