从HRESULTexception:0x800A03EC添加数据validation
int row_index = 2; foreach (DataRow row in dataTableSourceSystem.Rows) { xlWorkSheet.get_Range("AM" + row_index.ToString(), System.Reflection.Missing.Value).Value2 = row["LookupShortName"].ToString(); row_index++; } Range range = xlWorkSheet.get_Range("G2,G50"); range.Validation.Add(XlDVType.xlValidateList, XlDVAlertStyle.xlValidAlertStop, XlFormatConditionOperator.xlBetween, "=$AM2:$AM50", System.Reflection.Missing.Value);
最后一行是抛出exception0x800A03EC
Am2
到Am50
有值。
任何人都可以请帮忙?
它应该是
Range range = xlWorkSheet.get_Range("G2:G50");
你有G2,G50
,逗号显然是一个“联盟”运营商。 相反,你需要一个范围操作符(见这里 )来匹配相同大小的范围AM2:AM50。
我也有这个例外,我想出了这是因为Worksheet.Selection。
我没有弄清楚,这与数据validation有什么联系,但是我会研究它并让你知道。
为了解决你的问题,你应该做这样的事情:
xlWorkSheet.Range["$A$1"].Select(); Range range = xlWorkSheet.get_Range("G2,G50"); Validation v = range.Validation; // you might want to delete validation first // v.Delete(); v.Add(XlDVType.xlValidateList, XlDVAlertStyle.xlValidAlertStop, XlFormatConditionOperator.xlBetween, "=$AM2:$AM50", System.Reflection.Missing.Value); // some other useful stuff for you // v.ErrorMessage = "You need to fill in a value from the validation list."; // v.InCellDropdown = true;