【055】长江水文数据自动记录程序
我們“老板”讓我記錄 http://www.cjh.com.cn/ 上面的長(zhǎng)江水文數(shù)據(jù)!此網(wǎng)站有個(gè)變態(tài)的事情就是數(shù)據(jù)只是在一段時(shí)間內(nèi)才有,例如:我是要記錄早晨8時(shí)的數(shù)據(jù),而此數(shù)據(jù)一般只出現(xiàn)在早晨8時(shí)和早晨9時(shí)之間,一旦到了9時(shí)之后,數(shù)據(jù)可能就要更新了,最開(kāi)始的時(shí)候,我都是早晨起來(lái)用 Weibo 截圖發(fā)布來(lái)記錄,知道有一天我突發(fā)奇想,我還是寫個(gè)程序吧,于是此程序就出現(xiàn)了!
首先看看預(yù)覽吧!
基本思路:
- 提取網(wǎng)頁(yè)中的文字,通過(guò)特征字符來(lái)查找需要的信息!
- 將查找的有用信息添加到 List 中!
- 將 List 中的數(shù)據(jù)導(dǎo)入到 DataGridView 或是 Excel 中!
遇到的問(wèn)題:
- 刷新網(wǎng)頁(yè)的時(shí)候,可能彈出廣告,就不可以正確提取數(shù)據(jù)!
- 確定是否都是8時(shí)的數(shù)據(jù)!
- 為了盡量縮短刷新頁(yè)面的次數(shù),測(cè)試時(shí)間在 8:30 - 9:00 之間,若是此段時(shí)間一直未出現(xiàn)都是8時(shí)的情況,需要另想辦法!
- C# 對(duì)于 Excel 的操作!
具體實(shí)現(xiàn)步驟如下:
① 全局變量:
public struct Info //用來(lái)記錄表格中的四個(gè)屬性數(shù)據(jù) {public string name;public string date;public string water;public string stream; }//引用:using Excel = Microsoft.Office.Interop.Excel; Excel.Application ex = new Excel.Application(); Excel.Workbook eWorkbook; Excel.Worksheet eWorksheet;int countRecorderDay = 0; //用來(lái)記錄白天的記載次數(shù) int countRecorderNight = 0; //用來(lái)記錄夜間的記錄次數(shù) int count = 0; //倒計(jì)時(shí)來(lái)用string saveFilePath = Environment.CurrentDirectory + @"\長(zhǎng)江水文\長(zhǎng)江水文.xlsx"; //Excel的文件地址② 添加控件:
timer1:用來(lái)記錄總時(shí)間,每隔1分鐘記錄一次,到達(dá) 8:30 啟動(dòng) timer2;
timer2:記錄局部操作,開(kāi)始刷新網(wǎng)頁(yè);
timer3:倒計(jì)時(shí);
notifyIcon1:用來(lái)顯示在任務(wù)欄中的通知;
contextMenuStrip2:用來(lái)顯示通知的右鍵菜單。
③ 具體代碼:
timer1_Tick 事件:
View Code private void timer1_Tick(object sender, EventArgs e) //計(jì)時(shí)器1 {if ((DateTime.Now.Hour == 8 && DateTime.Now.Minute >= 30 && countRecorderDay == 0) || (DateTime.Now.Hour == 20 && DateTime.Now.Minute >= 30 && countRecorderNight == 0)){timer2.Enabled = true; //開(kāi)啟 timer2lbTimer2.Text = "計(jì)時(shí)器2開(kāi)啟!";lbTimer1.Text = "計(jì)時(shí)器1關(guān)閉!";timer1.Enabled = false;return;}if (DateTime.Now.Hour == 23 && DateTime.Now.Minute >= 55) //夜間11點(diǎn),將數(shù)據(jù)歸零,等待第二天記錄 {countRecorderDay = 0;countRecorderNight = 0;}lbTimer1.Text = "計(jì)時(shí)器1開(kāi)啟!";lbRecord.Text = "上一次操作時(shí)間:" + DateTime.Now.ToShortTimeString(); //記錄 timer1 操作時(shí)間上次操作時(shí)間ToolStripMenuItem.Text = lbRecord.Text; }Form1_Load 事件:
View Code private void Form1_Load(object sender, EventArgs e) {webBrowser1.Url = new System.Uri("http://www.cjh.com.cn/");lbRecord.Text = "上一次操作時(shí)間:" + DateTime.Now.ToShortTimeString();上次操作時(shí)間ToolStripMenuItem.Text = lbRecord.Text; }btRefresh_Click 事件:
View Code private void btRefresh_Click(object sender, EventArgs e) //刷新網(wǎng)站 {webBrowser1.Url = new System.Uri("http://www.cjh.com.cn/"); }btShowData_Click 事件:
View Code private void btShowData_Click(object sender, EventArgs e) //數(shù)據(jù)出表 {webBrowser1.Url = new System.Uri("http://www.cjh.com.cn/");string strText = null;try{strText = webBrowser1.Document.Body.InnerText;}catch (System.Exception ex){MessageBox.Show(ex.ToString());}if (strText == null)return;int indexFront = strText.IndexOf("寸灘");int indexAfter = strText.IndexOf("防汛測(cè)報(bào)");string text = strText.Substring(indexFront, indexAfter - indexFront);string[] strLines = new string[20];strLines = text.Split(new char[] { '\n' });List<Info> content = new List<Info>();for (int i = 0; i < strLines.Length;i++ ){string[] parts = new string[5];if (strLines[i].Length < 5)break;parts = strLines[i].Split(new char[] { ' ' });Info inner = new Info();inner.name = parts[0];inner.date = parts[1];inner.water = parts[2].Substring(0, parts[2].IndexOf(".") + 3);inner.stream = parts[2].Substring(parts[2].IndexOf(".") + 3);content.Add(inner);}DataTable table = new DataTable();DataColumn columnName = new DataColumn("站點(diǎn)");DataColumn columnDate = new DataColumn("時(shí)間");DataColumn columnWater = new DataColumn("水位");DataColumn columnStream = new DataColumn("流量");table.Columns.Add(columnName);table.Columns.Add(columnDate);table.Columns.Add(columnWater);table.Columns.Add(columnStream);foreach (Info info in content){DataRow row = table.NewRow();row[0] = info.name;row[1] = info.date;row[2] = info.water;row[3] = info.stream;table.Rows.Add(row);}dataGridView1.DataSource = table; }btRecorder_Click 事件:
View Code private void btRecorder_Click(object sender, EventArgs e) //記錄數(shù)據(jù) {#region 獲取網(wǎng)站的中的數(shù)據(jù),并存到 List 中webBrowser1.Url = new System.Uri("http://www.cjh.com.cn/"); //刷新網(wǎng)站string strText = webBrowser1.Document.Body.InnerText; if (strText == null)return;int indexFront = strText.IndexOf("寸灘");int indexAfter = strText.IndexOf("防汛測(cè)報(bào)");string text = null;if (indexFront > 0 && indexAfter > indexFront)text = strText.Substring(indexFront, indexAfter - indexFront); //獲取有用的部分elsereturn;string[] strLines = new string[20];strLines = text.Split(new char[] { '\n' }); //將內(nèi)容按回車分割成數(shù)組 List<Info> content = new List<Info>(); //獲取數(shù)據(jù)的每一個(gè)部分for (int i = 0; i < strLines.Length; i++){string[] parts = new string[5];if (strLines[i].Length < 5)break;parts = strLines[i].Split(new char[] { ' ' });Info inner = new Info();inner.name = parts[0];inner.date = parts[1];inner.water = parts[2].Substring(0, parts[2].IndexOf(".") + 3);inner.stream = parts[2].Substring(parts[2].IndexOf(".") + 3);content.Add(inner);}#endregionint countDay = 0;int countNight = 0;foreach (Info info in content){if (info.date.Contains("8時(shí)")) //獲取8時(shí)的數(shù)據(jù)countDay++;else if (info.date.Contains("20時(shí)"))countNight++;}#region 定義 lunarMonth 和 lunarDayHashtable lunarMonth = new Hashtable();lunarMonth.Add(1, "正");lunarMonth.Add(2, "二");lunarMonth.Add(3, "三");lunarMonth.Add(4, "四");lunarMonth.Add(5, "五");lunarMonth.Add(6, "六");lunarMonth.Add(7, "七");lunarMonth.Add(8, "八");lunarMonth.Add(9, "九");lunarMonth.Add(10, "十");lunarMonth.Add(11, "十一");lunarMonth.Add(12, "十二");Hashtable lunarDay = new Hashtable();lunarDay.Add(1, "初一");lunarDay.Add(2, "初二");lunarDay.Add(3, "初三");lunarDay.Add(4, "初四");lunarDay.Add(5, "初五");lunarDay.Add(6, "初六");lunarDay.Add(7, "初七");lunarDay.Add(8, "初八");lunarDay.Add(9, "初九");lunarDay.Add(10, "初十");lunarDay.Add(11, "十一");lunarDay.Add(12, "十二");lunarDay.Add(13, "十三");lunarDay.Add(14, "十四");lunarDay.Add(15, "十五");lunarDay.Add(16, "十六");lunarDay.Add(17, "十七");lunarDay.Add(18, "十八");lunarDay.Add(19, "十九");lunarDay.Add(20, "二十");lunarDay.Add(21, "二十一");lunarDay.Add(22, "二十二");lunarDay.Add(23, "二十三");lunarDay.Add(24, "二十四");lunarDay.Add(25, "二十五");lunarDay.Add(26, "二十六");lunarDay.Add(27, "二十七");lunarDay.Add(28, "二十八");lunarDay.Add(29, "二十九");lunarDay.Add(30, "三十");#endregionif (countDay == 11){#region 8時(shí)string excelPath = saveFilePath;eWorkbook = ex.Workbooks.Open(excelPath); //打開(kāi)文件,賦值到工作簿ex.Visible = false; //程序顯示eWorksheet = (Excel.Worksheet)eWorkbook.Sheets[1]; //獲取第一個(gè)工作表//新格式string date = DateTime.Today.Month + "月" + DateTime.Today.Day + "日";ChineseLunisolarCalendar lunar = new ChineseLunisolarCalendar();string dateLunar = lunarMonth[GetMonthFromYear(DateTime.Today.Date)] + "月" + lunarDay[lunar.GetDayOfMonth(DateTime.Today.Date)]; int row = ex.Application.get_Range("B65535", Type.Missing).get_End(Excel.XlDirection.xlUp).Row;eWorksheet.get_Range("A" + (row + 1).ToString()).Value = date;eWorksheet.get_Range("B" + (row + 1).ToString()).Value = DateTime.Now.Hour + "時(shí)";eWorksheet.get_Range("C" + (row + 1).ToString()).Value = dateLunar;eWorksheet.get_Range("D" + (row + 1).ToString()).Value = content[0].water;eWorksheet.get_Range("E" + (row + 1).ToString()).Value = content[0].stream;eWorksheet.get_Range("F" + (row + 1).ToString()).Value = content[1].water;eWorksheet.get_Range("G" + (row + 1).ToString()).Value = content[1].stream;eWorksheet.get_Range("H" + (row + 1).ToString()).Value = content[2].water;eWorksheet.get_Range("I" + (row + 1).ToString()).Value = content[2].stream;eWorksheet.get_Range("J" + (row + 1).ToString()).Value = content[3].water;eWorksheet.get_Range("K" + (row + 1).ToString()).Value = content[3].stream;eWorksheet.get_Range("L" + (row + 1).ToString()).Value = content[4].water;eWorksheet.get_Range("M" + (row + 1).ToString()).Value = content[4].stream;eWorksheet.get_Range("N" + (row + 1).ToString()).Value = content[5].water;eWorksheet.get_Range("O" + (row + 1).ToString()).Value = content[5].stream;eWorksheet.get_Range("P" + (row + 1).ToString()).Value = content[6].water;eWorksheet.get_Range("Q" + (row + 1).ToString()).Value = content[6].stream;eWorksheet.get_Range("R" + (row + 1).ToString()).Value = content[7].water;eWorksheet.get_Range("S" + (row + 1).ToString()).Value = content[7].stream;eWorksheet.get_Range("T" + (row + 1).ToString()).Value = content[8].water;eWorksheet.get_Range("U" + (row + 1).ToString()).Value = content[8].stream;eWorksheet.get_Range("V" + (row + 1).ToString()).Value = content[9].water;eWorksheet.get_Range("W" + (row + 1).ToString()).Value = content[9].stream;eWorksheet.get_Range("X" + (row + 1).ToString()).Value = content[10].water;eWorksheet.get_Range("Y" + (row + 1).ToString()).Value = content[10].stream;eWorkbook.Save();ex.Quit();this.Focus();timer2.Enabled = false;lbTimer2.Text = "計(jì)時(shí)器2關(guān)閉!";timer1.Enabled = true;lbTimer1.Text = "計(jì)時(shí)器1開(kāi)啟!";label4.Text = DateTime.Now.ToShortDateString() + " 8時(shí) 記錄完畢!";countRecorderDay++;#endregion}if (countNight == 11){#region 20時(shí)string excelPath = saveFilePath;eWorkbook = ex.Workbooks.Open(excelPath); //打開(kāi)文件,賦值到工作簿ex.Visible = false; //程序顯示eWorksheet = (Excel.Worksheet)eWorkbook.Sheets[1]; //獲取第一個(gè)工作表//新格式string date = DateTime.Today.Month + "月" + DateTime.Today.Day + "日";ChineseLunisolarCalendar lunar = new ChineseLunisolarCalendar();string dateLunar = lunarMonth[GetMonthFromYear(DateTime.Today.Date)] + "月" +lunarDay[lunar.GetDayOfMonth(DateTime.Today.Date)];int row = ex.Application.get_Range("B65535", Type.Missing).get_End(Excel.XlDirection.xlUp).Row;//eWorksheet.get_Range("A" + (row + 1).ToString()).Value = date;eWorksheet.get_Range("B" + (row + 1).ToString()).Value = DateTime.Now.Hour + "時(shí)";//eWorksheet.get_Range("C" + (row + 1).ToString()).Value = dateLunar; eWorksheet.get_Range("D" + (row + 1).ToString()).Value = content[0].water;eWorksheet.get_Range("E" + (row + 1).ToString()).Value = content[0].stream;eWorksheet.get_Range("F" + (row + 1).ToString()).Value = content[1].water;eWorksheet.get_Range("G" + (row + 1).ToString()).Value = content[1].stream;eWorksheet.get_Range("H" + (row + 1).ToString()).Value = content[2].water;eWorksheet.get_Range("I" + (row + 1).ToString()).Value = content[2].stream;eWorksheet.get_Range("J" + (row + 1).ToString()).Value = content[3].water;eWorksheet.get_Range("K" + (row + 1).ToString()).Value = content[3].stream;eWorksheet.get_Range("L" + (row + 1).ToString()).Value = content[4].water;eWorksheet.get_Range("M" + (row + 1).ToString()).Value = content[4].stream;eWorksheet.get_Range("N" + (row + 1).ToString()).Value = content[5].water;eWorksheet.get_Range("O" + (row + 1).ToString()).Value = content[5].stream;eWorksheet.get_Range("P" + (row + 1).ToString()).Value = content[6].water;eWorksheet.get_Range("Q" + (row + 1).ToString()).Value = content[6].stream;eWorksheet.get_Range("R" + (row + 1).ToString()).Value = content[7].water;eWorksheet.get_Range("S" + (row + 1).ToString()).Value = content[7].stream;eWorksheet.get_Range("T" + (row + 1).ToString()).Value = content[8].water;eWorksheet.get_Range("U" + (row + 1).ToString()).Value = content[8].stream;eWorksheet.get_Range("V" + (row + 1).ToString()).Value = content[9].water;eWorksheet.get_Range("W" + (row + 1).ToString()).Value = content[9].stream;eWorksheet.get_Range("X" + (row + 1).ToString()).Value = content[10].water;eWorksheet.get_Range("Y" + (row + 1).ToString()).Value = content[10].stream;eWorkbook.Save();ex.Quit();this.Focus();//Application.Exit();timer2.Enabled = false;lbTimer2.Text = "計(jì)時(shí)器2關(guān)閉!";timer1.Enabled = true;lbTimer1.Text = "計(jì)時(shí)器1開(kāi)啟!";label4.Text = DateTime.Now.ToShortDateString() + " 20時(shí) 記錄完畢!";countRecorderNight++;#endregion} }btOpenFile_Click 事件:
View Code private void btOpenFile_Click(object sender, EventArgs e) //打開(kāi)工作簿 {if (btOpenFile.Text == "打開(kāi)Excel查看"){string excelPath = saveFilePath;eWorkbook = ex.Workbooks.Open(excelPath); //打開(kāi)文件,賦值到工作簿int rowNum = ex.Application.get_Range("B65535", Type.Missing).get_End(Excel.XlDirection.xlUp).Row;eWorksheet = (Excel.Worksheet)eWorkbook.Sheets[1];eWorksheet.get_Range("B" + (rowNum + 5).ToString()).Value = null; //保證滾到此位置ex.Visible = true;btOpenFile.Text = "保存關(guān)閉Excel";} else if(btOpenFile.Text == "保存關(guān)閉Excel"){eWorkbook.Save();ex.Quit();btOpenFile.Text = "打開(kāi)Excel查看";} }btDownloadData_Click 事件:
View Code private void btDownloadData_Click(object sender, EventArgs e) //保存當(dāng)前數(shù)據(jù) {#region 獲取網(wǎng)站的中的數(shù)據(jù),并存到 List 中webBrowser1.Url = new System.Uri("http://www.cjh.com.cn/"); //刷新網(wǎng)站string strText = webBrowser1.Document.Body.InnerText;if (strText == null)return;int indexFront = strText.IndexOf("寸灘");int indexAfter = strText.IndexOf("防汛測(cè)報(bào)");string text = null;if (indexFront > 0 && indexAfter > indexFront){text = strText.Substring(indexFront, indexAfter - indexFront); //獲取有用的部分 }else{return;}string[] strLines = new string[20];strLines = text.Split(new char[] { '\n' }); //將內(nèi)容按回車分割成數(shù)組 List<Info> content = new List<Info>(); //獲取數(shù)據(jù)的每一個(gè)部分for (int i = 0; i < strLines.Length; i++){string[] parts = new string[5];if (strLines[i].Length < 5)break;parts = strLines[i].Split(new char[] { ' ' });Info inner = new Info();inner.name = parts[0];inner.date = parts[1];inner.water = parts[2].Substring(0, parts[2].IndexOf(".") + 3);inner.stream = parts[2].Substring(parts[2].IndexOf(".") + 3);content.Add(inner);}#endregionint countDay = 0;int countNight = 0;foreach (Info info in content){if (info.date.Contains("8時(shí)")) //獲取8時(shí)的數(shù)據(jù)countDay++;else if (info.date.Contains("20時(shí)"))countNight++;}#region 定義 lunarMonth 和 lunarDayHashtable lunarMonth = new Hashtable();lunarMonth.Add(1, "正");lunarMonth.Add(2, "二");lunarMonth.Add(3, "三");lunarMonth.Add(4, "四");lunarMonth.Add(5, "五");lunarMonth.Add(6, "六");lunarMonth.Add(7, "七");lunarMonth.Add(8, "八");lunarMonth.Add(9, "九");lunarMonth.Add(10, "十");lunarMonth.Add(11, "十一");lunarMonth.Add(12, "十二");Hashtable lunarDay = new Hashtable();lunarDay.Add(1, "初一");lunarDay.Add(2, "初二");lunarDay.Add(3, "初三");lunarDay.Add(4, "初四");lunarDay.Add(5, "初五");lunarDay.Add(6, "初六");lunarDay.Add(7, "初七");lunarDay.Add(8, "初八");lunarDay.Add(9, "初九");lunarDay.Add(10, "初十");lunarDay.Add(11, "十一");lunarDay.Add(12, "十二");lunarDay.Add(13, "十三");lunarDay.Add(14, "十四");lunarDay.Add(15, "十五");lunarDay.Add(16, "十六");lunarDay.Add(17, "十七");lunarDay.Add(18, "十八");lunarDay.Add(19, "十九");lunarDay.Add(20, "二十");lunarDay.Add(21, "二十一");lunarDay.Add(22, "二十二");lunarDay.Add(23, "二十三");lunarDay.Add(24, "二十四");lunarDay.Add(25, "二十五");lunarDay.Add(26, "二十六");lunarDay.Add(27, "二十七");lunarDay.Add(28, "二十八");lunarDay.Add(29, "二十九");lunarDay.Add(30, "三十");#endregionif (true){#region 當(dāng)前時(shí)刻string excelPath = saveFilePath;eWorkbook = ex.Workbooks.Open(excelPath); //打開(kāi)文件,賦值到工作簿ex.Visible = false; //程序顯示eWorksheet = (Excel.Worksheet)eWorkbook.Sheets[1]; //獲取第一個(gè)工作表//新格式string date = DateTime.Today.Month + "月" + DateTime.Today.Day + "日";ChineseLunisolarCalendar lunar = new ChineseLunisolarCalendar();string dateLunar = lunarMonth[GetMonthFromYear(DateTime.Today.Date)] + "月" +lunarDay[lunar.GetDayOfMonth(DateTime.Today.Date)];int row = ex.Application.get_Range("B65535", Type.Missing).get_End(Excel.XlDirection.xlUp).Row;eWorksheet.get_Range("A" + (row + 1).ToString()).Value = date;eWorksheet.get_Range("B" + (row + 1).ToString()).Value = DateTime.Now.ToShortTimeString();eWorksheet.get_Range("C" + (row + 1).ToString()).Value = dateLunar;eWorksheet.get_Range("D" + (row + 1).ToString()).Value = content[0].water;eWorksheet.get_Range("E" + (row + 1).ToString()).Value = content[0].stream;eWorksheet.get_Range("F" + (row + 1).ToString()).Value = content[1].water;eWorksheet.get_Range("G" + (row + 1).ToString()).Value = content[1].stream;eWorksheet.get_Range("H" + (row + 1).ToString()).Value = content[2].water;eWorksheet.get_Range("I" + (row + 1).ToString()).Value = content[2].stream;eWorksheet.get_Range("J" + (row + 1).ToString()).Value = content[3].water;eWorksheet.get_Range("K" + (row + 1).ToString()).Value = content[3].stream;eWorksheet.get_Range("L" + (row + 1).ToString()).Value = content[4].water;eWorksheet.get_Range("M" + (row + 1).ToString()).Value = content[4].stream;eWorksheet.get_Range("N" + (row + 1).ToString()).Value = content[5].water;eWorksheet.get_Range("O" + (row + 1).ToString()).Value = content[5].stream;eWorksheet.get_Range("P" + (row + 1).ToString()).Value = content[6].water;eWorksheet.get_Range("Q" + (row + 1).ToString()).Value = content[6].stream;eWorksheet.get_Range("R" + (row + 1).ToString()).Value = content[7].water;eWorksheet.get_Range("S" + (row + 1).ToString()).Value = content[7].stream;eWorksheet.get_Range("T" + (row + 1).ToString()).Value = content[8].water;eWorksheet.get_Range("U" + (row + 1).ToString()).Value = content[8].stream;eWorksheet.get_Range("V" + (row + 1).ToString()).Value = content[9].water;eWorksheet.get_Range("W" + (row + 1).ToString()).Value = content[9].stream;eWorksheet.get_Range("X" + (row + 1).ToString()).Value = content[10].water;eWorksheet.get_Range("Y" + (row + 1).ToString()).Value = content[10].stream;eWorkbook.Save();ex.Quit();this.Focus();label4.Text = DateTime.Now.ToShortDateString() + DateTime.Now.ToShortTimeString() + "記錄完畢!";#endregion} }其他雜項(xiàng) - 包括函數(shù)以及菜單點(diǎn)擊事件和通知相關(guān)操作
View Code private int GetMonthFromYear(DateTime time) //獲取農(nóng)歷數(shù)據(jù)中的月份 {ChineseLunisolarCalendar clc = new ChineseLunisolarCalendar();if (clc.GetLeapMonth(time.Year) != 0) //存在閏月 {if (clc.GetMonth(time) > clc.GetLeapMonth(time.Year)) //如果月份大于閏月 {return clc.GetMonth(time) - 1;}}return clc.GetMonth(time);}private void Form1_SizeChanged(object sender, EventArgs e){if (this.WindowState == FormWindowState.Minimized){this.Visible = false;this.notifyIcon1.Visible = true;}}private void notifyIcon1_MouseUp(object sender, MouseEventArgs e){if (e.Button == MouseButtons.Left){if (this.Visible == false){this.Visible = true;this.WindowState = FormWindowState.Normal;}else{this.Visible = false;this.WindowState = FormWindowState.Minimized;}}else if (e.Button == MouseButtons.Right){notifyIcon1.ContextMenuStrip = contextMenuStrip2;}}private void 顯示主窗體ToolStripMenuItem_Click(object sender, EventArgs e){this.Visible = true;this.Focus();this.WindowState = FormWindowState.Normal;}private void 退出ToolStripMenuItem1_Click(object sender, EventArgs e){Application.Exit();}private void 主窗體顯示ToolStripMenuItem_Click(object sender, EventArgs e){this.Visible = true;this.Focus();this.WindowState = FormWindowState.Normal;}private void 打開(kāi)Excel查看ToolStripMenuItem_Click(object sender, EventArgs e){btOpenFile_Click(btOpenFile, e);打開(kāi)Excel查看ToolStripMenuItem.Text = btOpenFile.Text;}private void 退出ToolStripMenuItem_Click(object sender, EventArgs e){Application.Exit();}timer2_Tick 事件:
View Code private void timer2_Tick(object sender, EventArgs e) //計(jì)時(shí)器2 {label4.Text = "上一次操作時(shí)間:" + DateTime.Now.ToShortTimeString();btRecorder_Click(btRecorder, e); }timer3_Tick 事件:
View Code private void timer3_Tick(object sender, EventArgs e) //計(jì)時(shí)器3 {lbCountdown.Text = String.Format("{0:000}",(60 - (count % 60)));count++;if (DateTime.Now.Hour == 8 && DateTime.Now.Minute == 59 && DateTime.Now.Second == 30) //最后時(shí)刻監(jiān)測(cè),若是還沒(méi)有添加數(shù)據(jù),則主動(dòng)添加,并打開(kāi)網(wǎng)頁(yè)! {if (countRecorderDay == 0){btDownloadData_Click(btDownloadData, e);System.Diagnostics.Process.Start("http://www.cjh.com.cn/");timer1.Enabled = true;timer2.Enabled = false;}}if (DateTime.Now.Hour == 20 && DateTime.Now.Minute == 59 && DateTime.Now.Second == 30){if (countRecorderNight == 0){btDownloadData_Click(btDownloadData, e);System.Diagnostics.Process.Start("http://www.cjh.com.cn/");timer1.Enabled = true;timer2.Enabled = false;}}if (DateTime.Now.Hour == 10 && DateTime.Now.Minute == 30 && DateTime.Now.Second == 30) //承接上面,若數(shù)據(jù)添加不全,則在一個(gè)半小時(shí)后再次添加! {btRefresh_Click(btRefresh, e); //否則在執(zhí)行20時(shí)的時(shí)候,此時(shí)網(wǎng)頁(yè)還是8時(shí)的效果,因此還會(huì)加載一次!if (countRecorderDay == 0){btDownloadData_Click(btDownloadData, e);System.Diagnostics.Process.Start("http://www.cjh.com.cn/");}}if (DateTime.Now.Hour == 22 && DateTime.Now.Minute == 30 && DateTime.Now.Second == 30){btRefresh_Click(btRefresh, e);if (countRecorderNight == 0){btDownloadData_Click(btDownloadData, e);System.Diagnostics.Process.Start("http://www.cjh.com.cn/");}} }④ 源程序下載:>>?i?<<
修改:
1. 在加入文本的時(shí)候,之前是按字符串添加,因此到達(dá)Excel中也是字符串格式的數(shù)字文本,修改如下,將字符串轉(zhuǎn)為數(shù)字格式再加入到Excel中!
eWorksheet.get_Range("D" + (row + 1).ToString()).Value = Convert.ToSingle(content[0].water); eWorksheet.get_Range("E" + (row + 1).ToString()).Value = Convert.ToSingle(content[0].stream);eWorksheet.get_Range("F" + (row + 1).ToString()).Value = Convert.ToSingle(content[1].water); eWorksheet.get_Range("G" + (row + 1).ToString()).Value = Convert.ToSingle(content[1].stream);2. 若是直接將Excel中的文本轉(zhuǎn)為數(shù)字類型,要首先將單元格的Value值轉(zhuǎn)為String,如下所示!
for (int i = 4; i <= 56;i++ ) {eWorksheet.get_Range(str + i.ToString()).Value = Convert.ToSingle(eWorksheet.get_Range(str + i.ToString()).Value.ToString()); }?
轉(zhuǎn)載于:https://www.cnblogs.com/alex-bn-lee/archive/2012/07/05/2577371.html
總結(jié)
以上是生活随笔為你收集整理的【055】长江水文数据自动记录程序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 在winform程序中启动wpf窗体
- 下一篇: Intent进阶 和 Intent-fi