VB.Net:在Excel单元格中插入checkbox

我试图从一堆不同的数据源中制作一个阅读器友好的Excel电子表格。 其中的一部分就是将checkbox添加到特定列中的每一行。 我相信这不能通过“单元格”来完成,而是通过电子表格上的位置来完成。

我试过…

Dim cb As ICheckBox = protoWorksheet.CheckBoxes.AddCheckBox(4, 2, 15, 100) cb.CheckState = CheckState.Checked cb.Text = "Test" 

但收到以下错误:

Microsoft.VisualBasic.dll中发生了typesSystem.MissingMemberException的未处理的exception“附加信息:未findtypes为”CheckBoxes“的公共成员”AddCheckBox“。

任何帮助深表感谢!

添加方法是为了一个正常的checkbox,而不是一个ICheckbox。 以下是如何将普通checkbox添加到每一行的示例:

  Dim xlApp As Excel.Application = New Microsoft.Office.Interop.Excel.Application xlApp.Visible = True Dim xlWorkbooks As Excel.Workbooks = xlApp.Workbooks Dim xlWorkbook As Excel.Workbook = xlWorkbooks.Add Dim xlWorksheet As Excel.Worksheet = CType(xlWorkbook.Worksheets(1), Excel.Worksheet) 'Here, we get the rowHeight so we can position each textbox within each row Dim rowHeight As Integer = CInt(xlWorksheet.Range("A1").RowHeight) Dim cbWidth As Integer = 100 Dim cbHeight As Integer = rowHeight Dim cbLeft As Integer = 5 'Adds ten checkboxes to the page, one on each line For i As Integer = 0 To 9 Dim cbTest As Microsoft.Office.Interop.Excel.CheckBox = xlWorksheet.CheckBoxes.Add(cbLeft, (i * rowHeight), cbWidth, cbHeight) With cbTest .Value = True .Text = "TestText" & i.ToString .Name = "Checkbox" & i.ToString End With Next i 'To check the values of each checkbox, you can iterate the worksheet's checkboxes and check their name/value properties For Each cb As Microsoft.Office.Interop.Excel.CheckBox In xlWorksheet.CheckBoxes MsgBox(cb.Name & " : " & If(CType(cb.Value, Boolean) = True, "Checked", "Unchecked")) Next cb 

上面的代码做了几件事情来解决在评论中的每个进一步的问题。 首先,使用CheckBoxes.Add方法将checkbox添加到电子表格中。 接下来,正如你所提到的,checkbox不能添加到行,必须使用点定位,我得到rowheight并保存以备后用(在电子表格中,行可能有不同的高度,你会想要移动rowheight逻辑里面的循环,并检查每一行,但你得到它,但一个单一的值就足够了这个例子)。 然后,使用一个简单的for循环在每一行中放置一个checkbox,使用rowheight乘以第#行来获得正确的位置。 我也给每个checkbox一个名字供以后参考。 最后,有一个循环示例,可用于迭代所有电子表格的checkbox,并检查其选中/未选中的值。