C# 使用c编写选定或激活的excel工作表#
我正在尝试从一个简单的用户表单向现有的Excel文件中添加一些vlaue或文本。打开Excel文件后,用户应该能够选择一张工作表,然后将textbox.text写入所选工作表。我正在使用组合框选择或激活工作表。请参见下面的代码:C# 使用c编写选定或激活的excel工作表#,c#,excel,C#,Excel,我正在尝试从一个简单的用户表单向现有的Excel文件中添加一些vlaue或文本。打开Excel文件后,用户应该能够选择一张工作表,然后将textbox.text写入所选工作表。我正在使用组合框选择或激活工作表。请参见下面的代码: private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { switch (comboBox1.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];非常感谢。现在可以用了!!很抱歉我的拼写错误,谢谢你编辑我的问题。我没有重读我的问题!非常感谢。现在可以用了!!很抱歉我的拼写错误,谢谢你编辑我的问题。我没有重读我的问题!