private void button1_Click(object sender, EventArgs e) { //string output; //output = pd.Lookup("14794299760").ToString(); OpenFileDialog openDlg = new OpenFileDialog(); // 指定打开文本文件(后缀名为txt) openDlg.Filter = "excel(*.xls)|*.xls|excel(*.xlsx)|*.xlsx"; if (openDlg.ShowDialog() == DialogResult.OK) { dataGridView1.Rows.Clear(); Loading.Text = "数据加载中..."; currCount = 0; noSearchCount = 0; noSearchPhoneList = new List <string>(); ClearLoadList(); lv_province.Clear(); Task.Factory.StartNew((state) => { //excel文件路径 string filePath = openDlg.FileName; //获取到工作簿 try { var workFile = NPOIExcelHelper.OpenWorkbook(filePath); List <DataGridViewRow> dataGridViewRows = new List <DataGridViewRow>(); //获取行信息 List <string[]> phoneList = NPOIExcelHelper.ReadLines(workFile.GetSheetAt(0), 0, 0, 0); NPOIExcelHelper.CloseWorkbook(workFile); PhoneData pd = new PhoneData("phone.dat"); totalCount = phoneList.Count(m => !string.IsNullOrEmpty(m[0]) && m[0].StartsWith("1")); phoneList.ForEach(m => { if (m.Length > 0) { string mobile = m[0]; if (!string.IsNullOrEmpty(mobile) && mobile.StartsWith("1")) { var model = pd.Lookup(mobile); string Province = model.Province; //省 string City = model.City; //市 string CardType = model.CardType; //运营商 DataGridViewRow row = new DataGridViewRow(); row.Cells.Add(new DataGridViewTextBoxCell() { Value = mobile }); row.Cells.Add(new DataGridViewTextBoxCell() { Value = Province }); row.Cells.Add(new DataGridViewTextBoxCell() { Value = City }); row.Cells.Add(new DataGridViewTextBoxCell() { Value = CardType }); dataGridViewRows.Add(row); cacheLoadList.Add(model); if (string.IsNullOrEmpty(Province)) { noSearchCount++; noSearchPhoneList.Add(mobile); } else { currCount++; } } else { DataGridViewRow row = new DataGridViewRow(); row.Cells.Add(new DataGridViewTextBoxCell() { Value = mobile }); row.Cells.Add(new DataGridViewTextBoxCell() { Value = "错误格式" }); row.Cells.Add(new DataGridViewTextBoxCell() { Value = "未识别" }); row.Cells.Add(new DataGridViewTextBoxCell() { Value = "未识别" }); dataGridViewRows.Add(row); cacheLoadList.Add(new PhoneData.PhoneRecord() { PhoneNum = mobile, Province = "错误格式", City = "未识别", CardType = "未识别", }); } } }); this.Invoke(new EventHandler(delegate { dataGridView1.Rows.AddRange(dataGridViewRows.ToArray()); })); lv_province.Items.Add("全部"); lab_datalist.Text = currCount.ToString() + "条"; var groups = cacheLoadList.GroupBy(m => m.Province); foreach (var group in groups) { lv_province.Items.Add(group.Key); } } catch (Exception ex) { MessageBox.Show("请关闭打开的Excel再进行导入"); } }, dataGridView1); Task.Run(new Action(delegate() { RefreshTxt(); })); } }