Изменить имя рабочего листа

Я использую Excel Interop для создания файла excel и вывода в него данных, и я хочу изменить имя рабочего листа на основе выбора пользователя из поля со списком. Однако я не могу получить ввод от comboBox для отображения в качестве имени рабочего листа. Однако я могу получить то же значение для отображения в качестве имени рабочего листа, если оно появляется из текстового поля. Я даже использую comboBox.SelectedItem.ToString() и делаю его строкой, а затем пытаюсь применить это как имя рабочего листа. Замена любых не-альфа-символов пробелами тоже не сработала. Стинг содержит только альфа-символы и пробелы, но не заменяет исходное имя рабочего листа.

Вот код, который я использую, чтобы попытаться изменить имя рабочего листа.

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

person user1546315    schedule 09.08.2012    source источник
comment
Вы пробовали использовать comboBox.Text вместо comboBox.SelectedItem.ToString()?   -  person hmqcnoesy    schedule 09.08.2012
comment
да и не работает. это очень разочаровывающая маленькая причуда с взаимодействием с Excel   -  person user1546315    schedule 09.08.2012


Ответы (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
       //
    }
person Siddharth Rout    schedule 10.08.2012