Промяна на името на работния лист

Използвам Excel Interop, за да създам excel файл и да извеждам данни към него и искам да променя името на работния лист въз основа на избора на потребителя от comboBox. Въпреки това не мога да получа вход от comboBox, който да се показва като име на работен лист. Мога обаче да получа същата стойност за показване като името на работния лист, ако идва от текстово поле. Дори използвам 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;

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