先将txt内容读取到datatable中,然后将其导入到控件dataGridView中去,创建列名,将每一行文本内容使用分隔符号隔开,使用foreach将每一行数据导入到控件每一个单元格中。对于有些文本,需要删除最后个字符(可能有个换行符)。
StreamReader sr = new StreamReader("E:\\Desktop\\111.txt"/*, Encoding.GetEncoding("GB2312")*/); string txt = sr.ReadToEnd()/*.Replace("\r\n", "")*/; //string[] nodes = txt.Split(Convert.ToChar(10)); string[] nodes = txt.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);//过滤空回车符 Console.WriteLine("1"); Console.WriteLine(nodes[0]); Console.WriteLine("2"); Console.WriteLine(nodes[1]); Console.WriteLine(nodes[2]); dt.Columns.Add("Wafer_Source", typeof(String)); dt.Columns.Add("Wafer_Lot_piece", typeof(String)); dt.Columns.Add("颗数", typeof(String)); dt.Columns.Add("颗数/g", typeof(String)); dt.Columns.Add("净重", typeof(String)); dt.Columns.Add("毛重", typeof(String)); dt.Columns.Add("时间", typeof(String)); foreach (string node in nodes) { string[] strs = node.Split(';'); Console.WriteLine("1"); DataRow dr = dt.NewRow(); dr["Wafer_Source"] = strs[0]; dr["Wafer_Lot_piece"] = strs[1]; dr["颗数"] = strs[2]; dr["颗数/g"] = strs[3]; dr["净重"] = strs[4]; dr["毛重"] = strs[5]; dr["时间"] = strs[6]; dt.Rows.Add(dr); } this.dataGridView1.DataSource = dt; foreach (DataGridViewColumn column in dataGridView1.Columns)//自适应列宽 { column.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells; } //sr.Close(); }
建立查询功能,筛选控件中的内容,like模糊查询。
DataTable dataTable = new DataTable(); foreach (DataColumn item in dt.Columns) { DataColumn column = new DataColumn(item.ColumnName, typeof(string)); dataTable.Columns.Add(column); } foreach (DataRow item in dt.Rows) { List<string> values = new List<string>(); foreach (object value in item.ItemArray) { if (value != null) values.Add(Convert.ToString(value)); else values.Add(""); } DataRow row = dataTable.NewRow(); row.ItemArray = values.ToArray(); dataTable.Rows.Add(row); } //string cx = "Wafer_Source=textBox1 .Text"; DataTable result1 = dataTable.Select("时间 like'%" + dateTimePicker1.Value.ToString("yyyy/MM/dd") + "%'").CopyToDataTable(); this.dataGridView1.DataSource = result1;