Combobox в Syncfusion XlsIO - PullRequest
       14

Combobox в Syncfusion XlsIO

0 голосов
/ 14 января 2012

Привет, я новичок в продукте Syncfusion, Мне нужно получить значения комбобокса, созданного в файле Excel Я нашел:

IComboBoxShape, который содержит SelectedValue и SelectedIndex Но не все значения.

Должен ли я использовать другую вещь

вот мой код

var xlApp = xl.Excel;
var wkbk = xlApp.Workbooks.Open(stream); 
var sheet1 = kbk.Worksheets[0];  
var combobox = sheet1.ComboBoxes[0];

и после этого? Что мне делать?

1 Ответ

1 голос
/ 12 июня 2012

Обычно элементы привязываются к ComboBox Excel, указывая диапазон ячеек.Значения, присутствующие в определенном диапазоне ячеек, перечислены как элементы ComboBox в файлах Excel.Кроме того, Essential XlsIO возвращает правильный диапазон, даже если ячейки, на которые имеются ссылки, связаны в другой рабочей таблице.Свойство "xlComboBox.ListFillRange" содержит диапазон ячеек, на которые ссылаются / связывают для заполнения элементов комбинированного списка.Используя это свойство, вы можете получить диапазон, а затем выполнить итерацию по всему диапазону, чтобы получить все элементы списка.К настоящему моменту я приложил фрагмент кода для извлечения элементов ComboBox.

    private void button1_Click(object sender, EventArgs e)
    {
        //Instantiate the spreadsheet creation engine.
        ExcelEngine excelEngine = new ExcelEngine();

        //Instantiate the excel application object.
        IApplication application = excelEngine.Excel;

        //Open the excel file and instantiate the workbook object
        IWorkbook workbook = application.Workbooks.Open(@"..\..\Data\Book1.xlsx");

        //Retrieve the Excel comboBox from the worksheet
        IComboBoxShape xlComboBox = workbook.Worksheets[0].ComboBoxes[0];
        //user defined method to retrieve Excel ComboBox items and populate them in a Windows forms - ComboBox control
        RetrieveItemsFromExcelComboBox(xlComboBox, comboBox1);

        xlComboBox = workbook.Worksheets[0].ComboBoxes[1];
        RetrieveItemsFromExcelComboBox(xlComboBox, comboBox2);


        //Close the workbook.
        workbook.Close();
        //Dispose the excel engine
        excelEngine.Dispose();

    }
    /// <summary>
    /// Retrieve the items from the Excel ComboBox and populate them in Windows form - ComboBox control
    /// </summary>
    /// <param name="xlComboBox">Excel combobox instance (IComboBoxShape)</param>
    /// <param name="comboBox">Windows Forms - Combo Box instance</param>
    private void RetrieveItemsFromExcelComboBox(IComboBoxShape xlComboBox, ComboBox wfComboBox)
    {
        //Get the range where the ComboBox items are present in the workbook
        IRange xlRange = xlComboBox.ListFillRange;
        //iterate through the range of the comboBox items and add them into the Windows forms - ComboBox control
        for (int rowIndex = xlRange.Row; rowIndex <= xlRange.LastRow; rowIndex++)
        {
            for (int colIndex = xlRange.Column; colIndex <= xlRange.LastColumn; colIndex++)
            {
                wfComboBox.Items.Add(xlRange[rowIndex, colIndex].DisplayText);
            }
        }
        wfComboBox.SelectedIndex = xlComboBox.SelectedIndex - 1;
    }

Дайте мне знать, если это поможет вам.

...