我还没有写任何具体的东西,但是我有一个VSTO应用程序,我想做以下事情:
1)使用Moq模拟范围互操作
2)将查询表添加到模拟范围,以便使用SQL查询返回的数据填充该查询表
3)使用模拟范围的数据作为下拉列表中可能出现的清单,将DataValidation添加到当前工作表中的单元格(范围)中。
这种行为有可能吗?
在第一次尝试中,我能够创建模拟范围,但是不会使用模拟范围而不是实际范围来创建ListObject。
任何提示将不胜感激
根据要求,下面是一些代码:
List<string> values = new List<string>();
values.Add("First");
values.Add("Second");
if(values.Count > 0)
{
string data = String.Join(";", values);
var mockedrange = new Mock<Microsoft.Office.Interop.Excel.Range>();
for(int i = 0; i < values.Count; i++)
{
mockedrange.Setup(r => r[i, It.IsAny<object>()]).Returns(values[i]);
}
Microsoft.Office.Interop.Excel.Range range3 = VSTOSheet.Cells[countaux, 3];
range3.Select();
range3.Validation.Delete();
range3.Validation.Add(XlDVType.xlValidateList,
XlDVAlertStyle.xlValidAlertInformation,
XlFormatConditionOperator.xlBetween,
data,
Type.Missing);
range3.Validation.IgnoreBlank = true;
range3.Validation.InCellDropdown = true;
}