如何根据其他 sheet 填写数据验证下拉列表?

How to fill data validation dropdown based of other sheet?


我有两个 sheet,我想将数据验证添加到第一列,并根据第一个 sheet 的第一列填充它的值。 这是我的代码:

using (SpreadsheetDocument myDoc = SpreadsheetDocument.Create(path, SpreadsheetDocumentType.Workbook))
            {
                WorkbookPart workbookPart = myDoc.AddWorkbookPart();
                workbookPart.Workbook = new Workbook();

                Sheets sheets = myDoc.WorkbookPart.Workbook.AppendChild(new Sheets());

                // the data for sheet 1
                WorksheetPart worksheetPart1 = workbookPart.AddNewPart<WorksheetPart>();
                Worksheet workSheet1 = new Worksheet();
                SheetData sheetData1 = new SheetData();

                workSheet1.AppendChild(sheetData1);
                worksheetPart1.Worksheet = workSheet1;

                Sheet sheet1 = new Sheet()
                {
                    Id = myDoc.WorkbookPart.GetIdOfPart(worksheetPart1),
                    SheetId = 1,
                    Name = "Sheet1"
                };
                sheets.Append(sheet1);


                // the data for sheet 2
                WorksheetPart worksheetPart2 = workbookPart.AddNewPart<WorksheetPart>();
                Worksheet workSheet2 = new Worksheet();
                SheetData sheetData2 = new SheetData();

                workSheet2.AppendChild(sheetData2);
                worksheetPart2.Worksheet = workSheet2;

                Sheet sheet2 = new Sheet()
                {
                    Id = myDoc.WorkbookPart.GetIdOfPart(worksheetPart2),
                    SheetId = 2,
                    Name = "Sheet2"
                };
                sheets.Append(sheet2);

                DataValidations dataValidations = new DataValidations();
                DataValidation dataValidation = new DataValidation()
                {
                    Type = DataValidationValues.List,
                    AllowBlank = true,
                    SequenceOfReferences = new ListValue<StringValue>() { InnerText = "A:A" }
                };
                Formula1 data = new Formula1();
                data.Text = $"\"=Sheet1!$A:$A\"";
                dataValidation.Append(data);
                dataValidations.Append(dataValidation);

                worksheetPart2.Worksheet.AppendChild(dataValidations);
            }

我的问题是,当设置 data.TEXT 等于 $""=Sheet1!$A:$A"" 时,它只显示了一个包含一行的列表在下拉列表中。
我想在 sheet1 的第一列中获取值并根据它在 sheet2 中填写下拉列表

只需稍作改动,您的代码就适用于我。只需删除内部引号。

data.Text = $"=Sheet1!$A:$A";