UControl_Log.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Drawing;
  5. using System.Data;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using System.IO;
  11. using System.Threading;
  12. namespace HOZProject
  13. {
  14. public partial class UControl_Log : UserControl
  15. {
  16. public UControl_Log()
  17. {
  18. InitializeComponent();
  19. }
  20. private void btnClose_Click(object sender, EventArgs e)
  21. {
  22. Form fParent = this.ParentForm;
  23. fParent.Close();
  24. }
  25. public void ShowProcessLogInfo(string[] strLog)
  26. {
  27. DataTable dt = new DataTable();
  28. dt.Columns.Add("HoleName");
  29. dt.Columns.Add("Time");
  30. dt.Columns.Add("Message");
  31. dt.Columns.Add("State");
  32. foreach (string strItem in strLog)
  33. {
  34. string[] Nt = strItem.Split('_');
  35. DataRow dr = dt.NewRow();
  36. dr[0] = Nt[0];
  37. dr[1] = Nt[1];
  38. dr[2] = Nt[2];
  39. dr[3] = Nt[3];
  40. dt.Rows.Add(dr);
  41. }
  42. dgvLog.DataSource = dt;
  43. lblLogCount.Text = dt.Rows.Count.ToString()+"条";
  44. }
  45. private void dgvLog_SelectionChanged(object sender, EventArgs e)
  46. {
  47. dgvLog.ClearSelection();
  48. }
  49. #region 关闭按钮 鼠标操作事件
  50. private void pbClose_MouseEnter(object sender, EventArgs e)
  51. {
  52. pbClose.BackgroundImage = global::HOZProject.Properties.Resources.exit_2_;
  53. }
  54. private void pbClose_MouseLeave(object sender, EventArgs e)
  55. {
  56. pbClose.BackgroundImage = global::HOZProject.Properties.Resources.exit_2_;
  57. }
  58. #endregion
  59. private void btnExport_Click(object sender, EventArgs e)
  60. {
  61. ExportDataToExcel(this.dgvLog);
  62. }
  63. public void ExportDataToExcel(DataGridView myDGV)
  64. {
  65. string path = "";
  66. SaveFileDialog saveDialog = new SaveFileDialog();
  67. saveDialog.Title = "导出表格";
  68. saveDialog.Filter = "Excel|*.xls";
  69. saveDialog.ShowDialog();
  70. path = saveDialog.FileName;
  71. if (path.IndexOf(":") < 0) return; //判断是否点击取消
  72. try
  73. {
  74. Thread.Sleep(1000);
  75. StreamWriter sw = new StreamWriter(path, false, Encoding.GetEncoding("gb2312"));
  76. StringBuilder sb = new StringBuilder();
  77. //写入标题
  78. for (int k = 0; k < myDGV.Columns.Count; k++)
  79. {
  80. if (myDGV.Columns[k].Visible)//导出可见的标题
  81. {
  82. //"\t"就等于键盘上的Tab,加个"\t"的意思是: 填充完后进入下一个单元格.
  83. sb.Append(myDGV.Columns[k].HeaderText.ToString().Trim() + "\t");
  84. }
  85. }
  86. sb.Append(Environment.NewLine);//换行
  87. //写入每行数值
  88. for (int i = 0; i < myDGV.Rows.Count; i++)
  89. {
  90. System.Windows.Forms.Application.DoEvents();
  91. for (int j = 0; j < myDGV.Columns.Count; j++)
  92. {
  93. if (myDGV.Columns[j].Visible)//导出可见的单元格
  94. {
  95. //注意单元格有一定的字节数量限制,如果超出,就会出现两个单元格的内容是一模一样的.
  96. //具体限制是多少字节,没有作深入研究.
  97. sb.Append(myDGV.Rows[i].Cells[j].Value.ToString().Trim() + "\t");
  98. }
  99. }
  100. sb.Append(Environment.NewLine); //换行
  101. }
  102. sw.Write(sb.ToString());
  103. sw.Flush();
  104. sw.Close();
  105. MessageBox.Show("导出成功", "", MessageBoxButtons.OK);
  106. }
  107. catch (Exception ex)
  108. {
  109. MessageBox.Show(ex.Message);
  110. }
  111. }
  112. }
  113. }