C# 更改工作表名称
我正在使用Excel互操作创建Excel文件并向其中输出数据,我希望根据用户从组合框中的选择更改工作表名称。但是,我无法从组合框中获取显示为工作表名称的输入。但是,如果工作表名称来自文本框,我可以获得与工作表名称相同的显示值。我甚至使用了C# 更改工作表名称,c#,excel,excel-interop,C#,Excel,Excel Interop,我正在使用Excel互操作创建Excel文件并向其中输出数据,我希望根据用户从组合框中的选择更改工作表名称。但是,我无法从组合框中获取显示为工作表名称的输入。但是,如果工作表名称来自文本框,我可以获得与工作表名称相同的显示值。我甚至使用了comboBox.SelectedItem.ToString()并将其设置为字符串,然后尝试将其作为工作表名称。用空格替换任何非字母字符也不起作用。sting只有字母字符和空格,但不会替换原始工作表名称 worksheet = (Excel.Worksheet)
comboBox.SelectedItem.ToString()
并将其设置为字符串,然后尝试将其作为工作表名称。用空格替换任何非字母字符也不起作用。sting只有字母字符和空格,但不会替换原始工作表名称
worksheet = (Excel.Worksheet)workbook.Worksheets.Add(Missing.Value, workbook.Worksheets[sheetCount], Missing.Value, Missing.Value);
workbook.Worksheets[sheetCountPlusONe].Name = "Results " + registrationForm.selectedEvent;
下面是我用来尝试更改工作表名称的代码
worksheet = (Excel.Worksheet)workbook.Worksheets.Add(Missing.Value, workbook.Worksheets[sheetCount], Missing.Value, Missing.Value);
workbook.Worksheets[sheetCountPlusONe].Name = "Results " + registrationForm.selectedEvent;
试试这个。我假设
registrationForm
是组合框
您必须使用GetItemText
方法来分析所选项目,并最终返回该项目的文本
string WsName = this.registrationForm.GetItemText(this.registrationForm.SelectedItem);
经过尝试和测试
private void Form1_Load(object sender, EventArgs e)
{
this.comboBox1.Items.Add("Sheet1111");
this.comboBox1.Items.Add("Sheet2222");
this.comboBox1.Items.Add("Sheet3333");
}
private void btnOPen_Click(object sender, EventArgs e)
{
Microsoft.Office.Interop.Excel.Application xlexcel;
Microsoft.Office.Interop.Excel.Workbook xlWorkBook;
Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
xlexcel = new Excel.Application();
xlexcel.Visible = true;
//~~> Open a File
xlWorkBook = xlexcel.Workbooks.Open("C:\\sample.xlsx", 0, true, 5, "", "", true,
Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
// Set Sheet 1 as the sheet you want to work with
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
string WsName = this.comboBox1.GetItemText(this.comboBox1.SelectedItem);
xlWorkSheet.Name = WsName;
//
//~~> Rest of code
//
}
试试这个。我假设
registrationForm
是组合框
您必须使用GetItemText
方法来分析所选项目,并最终返回该项目的文本
string WsName = this.registrationForm.GetItemText(this.registrationForm.SelectedItem);
经过尝试和测试
private void Form1_Load(object sender, EventArgs e)
{
this.comboBox1.Items.Add("Sheet1111");
this.comboBox1.Items.Add("Sheet2222");
this.comboBox1.Items.Add("Sheet3333");
}
private void btnOPen_Click(object sender, EventArgs e)
{
Microsoft.Office.Interop.Excel.Application xlexcel;
Microsoft.Office.Interop.Excel.Workbook xlWorkBook;
Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
xlexcel = new Excel.Application();
xlexcel.Visible = true;
//~~> Open a File
xlWorkBook = xlexcel.Workbooks.Open("C:\\sample.xlsx", 0, true, 5, "", "", true,
Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
// Set Sheet 1 as the sheet you want to work with
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
string WsName = this.comboBox1.GetItemText(this.comboBox1.SelectedItem);
xlWorkSheet.Name = WsName;
//
//~~> Rest of code
//
}
您是否尝试过使用
comboBox.Text
而不是comboBox.SelectedItem.ToString()
?是的,它不起作用。这是一个非常令人沮丧的小怪癖,您尝试使用excel interopHavecomboBox.Text
而不是comboBox.SelectedItem.ToString()
?是的,它不起作用。这是excel互操作的一个非常令人沮丧的小怪癖