在Excel中使用c#计算行数

我有与代码类似的Excel表

VPUDB001 VPUDB002 VPUDB003 VPUDB004 VPUDB005 VPUDB006 VPUDB007 VPUDB008 VPUDB009 VPUDB010 VPUDB011 VPULN001 VPULN002 VPULN003 VPULN004 VPULN005 VPULN006 VPULN007 VPULN008 VPULN009 

我想在Excel中显示以VPUDBVPULN开头的行数。

 private void browse_Click(object sender, EventArgs e) { DialogResult fileopen = openFileDialog1.ShowDialog(); string filename = openFileDialog1.FileName; textBox1.Text = filename; try { olecon = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + filename + "';Extended Properties=Excel 12.0"); olecon.Open(); DataTable dt = new DataTable(); dt = olecon.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); string[] excelsheetnames = new string[dt.Rows.Count]; int i = 0; foreach (DataRow row in dt.Rows) { excelsheetnames[i] = row["TABLE_NAME"].ToString(); string sheetnamealone = excelsheetnames[i].Remove(excelsheetnames[i].IndexOf('$')); comboBox1.Items.Add(sheetnamealone); i++; } //comboBox1.SelectedIndex = 1; } catch { } finally { olecon.Close(); } } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { OleDbCommand cmd = new OleDbCommand("Select [code] FROM ["+comboBox1.SelectedItem+"$] ", olecon); olecon.Open(); OleDbDataReader dReader; dReader = cmd.ExecuteReader(); while (dReader.Read()) { string s = dReader[0].ToString(); } olecon.Close(); } 

在这里,我浏览Excel工作表,我计数和显示在combobox,然后在组合选定的事件,我需要计算如上所述的特定表行。

尝试像这样linq将解决您的问题

  var query = from row in dTable.AsEnumerable() where ((row.Field<string>("columnname")).contains("VPUDB") || (row.Field<string>("columnname")).contains("VPULN")) select row; 

当你最初计算你的combobox时,使用string比较来查看它是否包含VPUDBVPULN ,如果是,则增加一个计数器。