2012-08-09 98 views
1

我正在使用Excel Interop創建Excel文件並向其輸出數據,並且我想根據用戶從組合框中的選擇更改工作表名稱。但是,我無法從comboBox獲取輸入以顯示爲工作表名稱。但是,如果它來自文本框,我可以獲得與工作表名稱相同的值。我甚至使用comboBox.SelectedItem.ToString()並將其設爲字符串,然後嘗試將其應用爲工作表名稱。用空格替換任何非alpha字符也不起作用。 sting只有字母字符和空格,但不會替換原始工作表名稱。更改工作表名稱

這是我用來嘗試和更改工作表名稱的代碼。

worksheet = (Excel.Worksheet)workbook.Worksheets.Add(Missing.Value, workbook.Worksheets[sheetCount], Missing.Value, Missing.Value); 
workbook.Worksheets[sheetCountPlusONe].Name = "Results " + registrationForm.selectedEvent; 
+1

您是否嘗試過使用,而不是'comboBox.SelectedItem.ToString()''comboBox.Text'? – hmqcnoesy 2012-08-09 18:42:26

+0

是的,它不起作用。這是一個非常令人沮喪的與excel互操作的小怪癖 – user1546315 2012-08-09 19:40:39

回答

1

試試這個。我假設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 
     // 
    }