简体   繁体   English

使用c#计算excel中的行数

[英]count number of rows in excel using c#

i have the excel sheet with code like 我有excel表,代码如

VPUDB001
VPUDB002
VPUDB003
VPUDB004
VPUDB005
VPUDB006
VPUDB007
VPUDB008
VPUDB009
VPUDB010
VPUDB011

VPULN001
VPULN002
VPULN003
VPULN004
VPULN005
VPULN006
VPULN007
VPULN008
VPULN009

I want to display the number of rows starting with VPUDB and VPULN in excel. 我想在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();
}

Here i browse the excel sheet and i count and display in combo box, then in combo selected event i need to count the particular sheet rows as said above. 在这里我浏览excel表,我计算并显示在组合框中,然后在组合选择的事件中我需要计算特定的表行如上所述。

在最初计算组合框时,使用字符串比较来查看它是否包含VPUDBVPULN ,如果是,则增加计数器。

try linq like this will resolve your issue 尝试这样的linq将解决您的问题

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

      select row;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM