我正在使用DocumentFormat.OpenXml 2.5版.Net 4.5.2。我创建了一个包含两个表格的工作簿。第二个工作表为第一个工作表中的数据验证提供查找数据。当我完成第二张表格时,我会执行以下操作来连接它们:
var sheet = workbookpart.WorksheetParts.First().Worksheet;
var extLst = new WorksheetExtensionList();
var ext = new WorksheetExtension();
var dataValidations = new DataValidations();
dataValidations.Count = 2;
var jobSplit1dataValidation = new DataValidation
{
Type = DataValidationValues.List,
AllowBlank = true,
SequenceOfReferences =
new ListValue<StringValue>() { InnerText = "K2:K990" },
Formula1 = new Formula1("JobSplitLookup!$A$2:$A$6")
};
var jobSplit2dataValidation = new DataValidation
{
Type = DataValidationValues.List,
AllowBlank = true,
SequenceOfReferences =
new ListValue<StringValue>() { InnerText = "L2:L990" },
Formula1 = new Formula1("JobSplitLookup!$B$2:$B$5")
};
dataValidations.Append(jobSplit1dataValidation, jobSplit2dataValidation);
ext.Append(dataValidations);
extLst.Append(ext);
sheet.Append(extLst);
当我构建电子表格并查看部件时,我在第一张表中看到了这些数据验证,我在第二张表中看到了数据。一切看起来都很合适。但是,在第一张表中,当我选择适用的单元格时,数据验证无效。
为了比较,我手动添加了数据验证并检查了xml。它是不同的,因为有一些命名空间应用于ext和dataValidations元素,而formula1节点有&#34; f&#34;和&#34; sqref&#34;子元素,而OpenXml生成sqref作为dataValidation的属性,而formula1的内部文本是对范围的引用。
必须(至少)一件我忽略的事情。它会跳出来吗?