Как программно добавить элемент управления флажка в ячейку Excel или установить или снять флажок существующего - PullRequest
0 голосов
/ 20 января 2012

Я использую COM-объект Excel в C # и хочу динамически вставить флажок в лист Excel и сделать его отмеченным или снятым с учетом условия.

OR

как я могу пометить как отмеченный существующий флажок в листе Excel программно. Я оглянулся и не нашел решения.

1 Ответ

3 голосов
/ 20 января 2012

Вы всегда можете записать макрос в MS Excel, и он даст вам хорошее представление о том, что нужно сделать с объектом Excel, чтобы чего-то достичь.Например, при записи макроса для вашей проблемы он получил следующий код:

ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, _
        DisplayAsIcon:=False, Left:=65.25, Top:=24, Width:=108, Height:=21). _
        Select

Я надеюсь, что отсюда вы можете увидеть, что нужно сделать, чтобы установить флажок на активном листе.

Вот более подробное объяснение (Visual Studio 2010 и C #): 1. Запустите Visual Studio и создайте новый проект (приложение для Windows или консольное приложение) 2. Щелкните правой кнопкой мыши на References и выберите «Добавить ссылку» 3. Выберите COMссылки и добавить библиотеку объектов Microsoft Excel xx.x (в моем случае xx.x - это 14.0, то есть Excel 2010).4. Куда-нибудь в вашем коде (некоторые функции, такие как Main или щелчок на кнопке) добавьте этот код:

// Start excel
Microsoft.Office.Interop.Excel.Application oXL = new Microsoft.Office.Interop.Excel.Application();
oXL.Visible = true;

// Get a sheet 
Microsoft.Office.Interop.Excel._Workbook oWB = (Microsoft.Office.Interop.Excel._Workbook)oXL.Workbooks.Add(System.Reflection.Missing.Value);
Microsoft.Office.Interop.Excel._Worksheet oSheet = (Microsoft.Office.Interop.Excel._Worksheet)oWB.ActiveSheet;

// Get ole objects and add new one
Microsoft.Office.Interop.Excel.OLEObjects objs = oSheet.OLEObjects();

// Here is the method that is posted in the answer
Microsoft.Office.Interop.Excel.OLEObject obj = objs.Add("Forms.CheckBox.1", 
    System.Reflection.Missing.Value,
    System.Reflection.Missing.Value,
    false,
    false,
    System.Reflection.Missing.Value,
    System.Reflection.Missing.Value,
    65.25,
    24,
    108,
    21);
// Here, you are making it checked. obj.Object is dynamic, so you will not get help from visual studio, but you know what properties CheckBox can have, right?
obj.Object.Value = true;

Надеюсь, это поможет.

...