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

我想从一个简单的用户窗体添加一些vlaue或文本到现有的Excel文件。 打开Excel文件后,用户应该能够select一个工作表,然后写入将textbox.text添加到选定的工作表。 我正在使用combobox来select或激活工作表。请参阅下面的代码:

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; } 

然而,在select正确的工作表之后,我的程序会不断将值写入第一个工作表。

我用于添加到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]; 

有人能帮我吗?

谢谢

在第一次打开工作簿时,您将在xlWorkSheet中存储在combobox中select的初始值。 不pipe你以后在做什么或者哪个工作表处于活动状态,variables总是指他们select的第一个工作表。 您需要在combobox中select新值时更新variables:

 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; } 

Activate()方法replace为Select()方法。
如何:以编程方式select工作表

Select方法select指定的对象,将用户的select移动到新的对象。 如果您想在不改变用户select的情况下将焦点带入对象,请使用“激活”方法。