将Excel DropDown从WorkBook复制到新的工作簿

时间:2013-03-21 16:06:25

标签: c# excel vsto validation gembox-spreadsheet

再一个Excel问题。 我的客户端发给我一个包含下拉列表(Combobox)的Excel文件,我需要复制Combobox或用里面的信息构建一个新的。 对于excel,我发现下拉列表被命名为数据验证(我已经得到它,但对他无能为力)。

我有Gembox dll和NativeExcel dll并没有找到任何解决方案。

使用GemBox我已经知道了:

ExcelFile ef = ExcelFile.Load("Modelo_AA.xlsx");
ExcelWorksheet ws = ef.Worksheets[0];
ExcelFile efnovo = new ExcelFile();
ExcelWorksheet wsnovo = efnovo.Worksheets.Add("Hello");
DataValidationCollection dvc = ws.DataValidations;
DataValidation dv = dvc[0];
bool dd = dv.InCellDropdown; //here i get true

由于 安德鲁

编辑:我认为数据值与下拉列表相关联!

Edit2:主要问题是将下拉列表从WorkBook复制到其他!

1 个答案:

答案 0 :(得分:0)

首先我想说的是,在你的情况下是的,DataValidation与dropdownlist相关联,因为它是List类型(参见dv.Type属性)。

另外,要将此列表DataValidation复制到另一个excel文件中,它将依赖于DataValidation源,如shahkalpesh的注释中所述,它们可以是硬编码的,也可以来自单元格范围。您可以通过获取dv.Formula1对象来检查DataValidation的来源。 例如,如果它是硬编码的,那么Formula1将是这些列表项的数组,您只需将DataValidation添加到另一个ExcelFile中:

wsnovo.DataValidations.Add(dv);

但是如果DataValidation在Formula1中有一个单元格范围,那么您还必须在新的ExcelFile中复制该单元格范围,或者您可以尝试读取该单元格范围中的单元格值并用硬编码替换Formula1物品清单。