0

又是一个 Excel 问题。我的客户向我发送了一个包含下拉列表(组合框)的 Excel 文件,我需要复制该组合框或使用里面的信息构建一个新组合框。对于 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:主要问题是将下拉列表从工作簿复制到其他!

4

1 回答 1

0

首先,我想说的是,在您的情况下,DataValidation 与下拉列表相关联,因为它是 List 类型(请参阅 dv.Type 属性)。

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

wsnovo.DataValidations.Add(dv);

但是,如果 DataValidation 在 Formula1 中有一个单元格区域,那么您也必须将该单元格区域复制到一个新的 ExcelFile 中,或者您可以尝试读取该单元格区域中的单元格值并将 Formula1 替换为硬编码的项目列表.

于 2013-12-03T10:03:01.160 回答