C# 使用c编写选定或激活的excel工作表#

C# 使用c编写选定或激活的excel工作表#,c#,excel,C#,Excel,我正在尝试从一个简单的用户表单向现有的Excel文件中添加一些vlaue或文本。打开Excel文件后,用户应该能够选择一张工作表,然后将textbox.text写入所选工作表。我正在使用组合框选择或激活工作表。请参见下面的代码: private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { switch (comboBox1.Text) {

我正在尝试从一个简单的用户表单向现有的Excel文件中添加一些vlaue或文本。打开Excel文件后,用户应该能够选择一张工作表,然后将textbox.text写入所选工作表。我正在使用组合框选择或激活工作表。请参见下面的代码:

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {

        switch (comboBox1.Text)
        {
            case "Sheetname":
                //((Excel.Worksheet)xlWorkBook.Sheets[1]).Select();
                xlWorkBook.Sheets[1].Activate();
                break;
            case "Scheetname":
                //((Excel.Worksheet)xlWorkBook.Sheets[2]).Select();
                xlWorkBook.Sheets[2].Activate();
                break;
        }
但是,在选择了正确的工作表之后,我的程序会继续将值写入第一个工作表

我用于添加到Excel工作表的代码如下:

private void button1_Click(object sender, EventArgs e) // Hier werden die daten eingetragen!
        {
                int lastRow = xlWorkSheet.Range["A" + xlWorkSheet.Rows.Count].End[Excel.XlDirection.xlUp].Row + 1;

                xlWorkSheet.Cells[lastRow, 1] = textBox1.Text;
                xlWorkSheet.Cells[lastRow, 2] = textBox2.Text;
                xlWorkSheet.Cells[lastRow, 3] = textBox2.Text;
          }
打开Excel文件时,我使用以下代码:

xlexcel = new Excel.Application();

xlexcel.Visible = true; //Tabelle ist Sichtbar

// Datei öffnen
xlWorkBook = xlexcel.Workbooks.Open("mypath");

xlWorkSheet =(Excel.Worksheet)xlWorkBook.Worksheets[comboBox1.SelectedText];
有人能帮我吗

谢谢

Activate()
方法替换为
Select()
方法。

Select方法选择指定的对象,该对象移动用户的 将所选内容添加到新对象。如果需要,请使用激活方法 在不更改用户选择的情况下将焦点对准对象

Activate()
方法替换为
Select()
方法。

Select方法选择指定的对象,该对象移动用户的 将所选内容添加到新对象。如果需要,请使用激活方法 在不更改用户选择的情况下将焦点对准对象


您正在将首次打开工作簿时在组合框中选择的初始值存储在
xlWorkSheet
中。不管您之后在做什么,也不管哪个工作表处于活动状态,变量总是指他们选择的第一个。当他们在组合框中选择新值时,您需要更新变量:

void OpenExcel()
{
    xlexcel = new Excel.Application();

    xlexcel.Visible = true; //Tabelle ist Sichtbar

    // Datei öffnen
    xlWorkBook = xlexcel.Workbooks.Open("mypath");

    // store first selected sheet in variable
    xlWorkSheet =(Excel.Worksheet)xlWorkBook.Worksheets[comboBox1.SelectedText];
}


private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    // select new sheet and update variable to refer to it
    switch (comboBox1.Text)
    {
        case "Sheetname":
            xlWorkSheet = (Excel.Worksheet)(xlWorkBook.Sheets[1]);
            xlWorkSheet.Select();
            break;
        case "Scheetname":
            xlWorkSheet = (Excel.Worksheet)(xlWorkBook.Sheets[2]);
            xlWorkSheet.Select();
            break;
    }
}

private void button1_Click(object sender, EventArgs e) // Hier werden die daten eingetragen!
{
    int lastRow = xlWorkSheet.Range["A" + xlWorkSheet.Rows.Count].End[Excel.XlDirection.xlUp].Row + 1;

    xlWorkSheet.Cells[lastRow, 1] = textBox1.Text;
    xlWorkSheet.Cells[lastRow, 2] = textBox2.Text;
    xlWorkSheet.Cells[lastRow, 3] = textBox2.Text;
}

您正在将首次打开工作簿时在组合框中选择的初始值存储在
xlWorkSheet
中。不管您之后在做什么,也不管哪个工作表处于活动状态,变量总是指他们选择的第一个。当他们在组合框中选择新值时,您需要更新变量:

void OpenExcel()
{
    xlexcel = new Excel.Application();

    xlexcel.Visible = true; //Tabelle ist Sichtbar

    // Datei öffnen
    xlWorkBook = xlexcel.Workbooks.Open("mypath");

    // store first selected sheet in variable
    xlWorkSheet =(Excel.Worksheet)xlWorkBook.Worksheets[comboBox1.SelectedText];
}


private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    // select new sheet and update variable to refer to it
    switch (comboBox1.Text)
    {
        case "Sheetname":
            xlWorkSheet = (Excel.Worksheet)(xlWorkBook.Sheets[1]);
            xlWorkSheet.Select();
            break;
        case "Scheetname":
            xlWorkSheet = (Excel.Worksheet)(xlWorkBook.Sheets[2]);
            xlWorkSheet.Select();
            break;
    }
}

private void button1_Click(object sender, EventArgs e) // Hier werden die daten eingetragen!
{
    int lastRow = xlWorkSheet.Range["A" + xlWorkSheet.Rows.Count].End[Excel.XlDirection.xlUp].Row + 1;

    xlWorkSheet.Cells[lastRow, 1] = textBox1.Text;
    xlWorkSheet.Cells[lastRow, 2] = textBox2.Text;
    xlWorkSheet.Cells[lastRow, 3] = textBox2.Text;
}

首先感谢你的快速回答。我按照你说的替换了方法。问题是我想,当我打开文件时。我认为这一行是问题所在:xlWorkSheet=(Excel.Worksheet)xlWorkBook.Worksheets[comboBox1.SelectedText];首先感谢你的快速回答。我按照你说的替换了方法。问题是我想,当我打开文件时。我认为这一行是问题所在:xlWorkSheet=(Excel.Worksheet)xlWorkBook.Worksheets[comboBox1.SelectedText];非常感谢。现在可以用了!!很抱歉我的拼写错误,谢谢你编辑我的问题。我没有重读我的问题!非常感谢。现在可以用了!!很抱歉我的拼写错误,谢谢你编辑我的问题。我没有重读我的问题!