【问题标题】:OpenXml DataValidation set predefined List for columnsOpenXml DataValidation 为列设置预定义列表
【发布时间】:2016-02-26 10:54:13
【问题描述】:

我正在使用 OpenXml 创建 Excel 文件并导出表格数据。一种情况是我希望一列具有预定义值的下拉列表,例如 true 和 false。我关注this问题并编写代码如下

DataValidation dataValidation = new DataValidation
{
    Type = DataValidationValues.List,
    AllowBlank = true,
    SequenceOfReferences = new ListValue<StringValue>() { InnerText = "B1" },
    //Formula1 = new Formula1("'SheetName'!$A$1:$A$3") // this was used in mentioned question
    Formula1 = new Formula1("True,False") // I need predefined values.
};

DataValidations dvs = worksheet.GetFirstChild<DataValidations>(); //worksheet type => Worksheet
if (dvs != null)
{
    dvs.Count = dvs.Count + 1;
    dvs.Append(dataValidation);
}
else
{
    DataValidations newDVs = new DataValidations();
    newDVs.Append(dataValidation);
    newDVs.Count = 1;
    worksheet.Append(newDVs);
}

如果我将它与带有单元格值范围的 SheetName 一起使用,它工作正常,但如果我添加字符串,它会抛出错误“找到不可读的内容”并删除数据验证节点。

如何在公式本身中为列表下拉验证添加值。它为手动添加(通过在 excel 应用程序中编辑)创建的 XML 列表值是 &lt;formula1&gt;"One,Two"&lt;/formula1&gt;(观察到的 xml 用于 excel 文件)

【问题讨论】:

    标签: c# excel openxml


    【解决方案1】:

    好的,我解决了这个问题。为公式添加了转义的双引号并完成。

    DataValidation dataValidation = new DataValidation
    {
        Type = DataValidationValues.List,
        AllowBlank = true,
        SequenceOfReferences = new ListValue<StringValue>() { InnerText = "B1" },
        Formula1 = new Formula1("\"True,False\"") // escape double quotes, this is what I was missing
    };
    
    DataValidations dvs = worksheet.GetFirstChild<DataValidations>(); //worksheet type => Worksheet
    if (dvs != null)
    {
        dvs.Count = dvs.Count + 1;
        dvs.Append(dataValidation);
    }
    else
    {
        DataValidations newDVs = new DataValidations();
        newDVs.Append(dataValidation);
        newDVs.Count = 1;
        worksheet.Append(newDVs);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-21
      • 1970-01-01
      • 2021-03-11
      • 2018-07-08
      • 2023-03-04
      • 1970-01-01
      • 2019-07-20
      • 1970-01-01
      相关资源
      最近更新 更多