使用c#写入选定或激活的Excel工作表

时间:2017-06-10 12:19:48

标签: c# excel

我正在尝试将一些简单的Userform中的一些vlaue或文本添加到现有的Excel-File中。打开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];

有人能帮助我吗?

谢谢

2 个答案:

答案 0 :(得分:0)

Activate()方法替换为Select()方法 How to: Programmatically Select Worksheets

  

Select方法选择指定的对象,该对象移动用户   选择新对象。如果需要,请使用Activate方法   在不改变用户选择的情况下将焦点带到对象上。

答案 1 :(得分:0)

首次打开工作簿时,您将在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;
}