【发布时间】:2020-11-16 18:47:10
【问题描述】:
我有两张纸,我想将数据验证添加到第一列并根据第一张纸第一列填充其值。
这是我的代码:
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"" 时,它只会在下拉列表中显示一个包含一行的列表。
我想在工作表 1 的第一列中获取值并根据它在工作表 2 中填写下拉列表
【问题讨论】:
-
不确定您是否使用 EPPlus。但是在那里你不能将验证范围添加为字符串。您必须使用地址。也许这里也是如此。如果您确实使用 EPPlus,这可能会有所帮助:stackoverflow.com/questions/53600471/…
-
我正在使用 OpenXML @VDWWD
标签: c# asp.net excel asp.net-core openxml