Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# OpenXML:创建一个工作簿,然后在其中放入一个验证器,而不是打开一个工作簿,然后在中放入一个验证器_C#_Openxml_Openxml Sdk - Fatal编程技术网

C# OpenXML:创建一个工作簿,然后在其中放入一个验证器,而不是打开一个工作簿,然后在中放入一个验证器

C# OpenXML:创建一个工作簿,然后在其中放入一个验证器,而不是打开一个工作簿,然后在中放入一个验证器,c#,openxml,openxml-sdk,C#,Openxml,Openxml Sdk,以下方法创建一个新工作簿,并插入两个validator下拉列表: public static void ForValidator() { using (SpreadsheetDocument myDoc = SpreadsheetDocument.Create("validator output.xlsx", SpreadsheetDocumentType.Workbook)) { WorkbookPart workbookpart = myDoc.AddWorkbookPart();

以下方法创建一个新工作簿,并插入两个validator下拉列表:

public static void ForValidator() {
 using (SpreadsheetDocument myDoc = SpreadsheetDocument.Create("validator output.xlsx", SpreadsheetDocumentType.Workbook)) {
  WorkbookPart workbookpart = myDoc.AddWorkbookPart();
  workbookpart.Workbook = new Workbook();
  WorksheetPart worksheetPart = workbookpart.AddNewPart<WorksheetPart>();
  SheetData sheetData_ = new SheetData();
  worksheetPart.Worksheet = new Worksheet(sheetData_);
  Sheets sheets_ = myDoc.WorkbookPart.Workbook.AppendChild(new Sheets());
  sheets_.AppendChild(new Sheet() {
   Id = myDoc.WorkbookPart.GetIdOfPart(myDoc.WorkbookPart.WorksheetParts.First()), SheetId = 1, Name = "Sheet1"
  });
  DataValidations dataValidations = new DataValidations();
  DataValidation dataValidation = new DataValidation() {
   Type = DataValidationValues.List, AllowBlank = true, SequenceOfReferences = new ListValue<StringValue>() { InnerText = "F2:F3" }
  };
  Formula1 formula = new Formula1();
  formula.Text = "\"Selection 1,Selection 2,Selection 3\"";
  dataValidation.Append(formula);
  dataValidations.Append(dataValidation);
  worksheetPart.Worksheet.AppendChild(dataValidations);
 }
}
publicstaticvoidforvalidator(){
使用(SpreadsheetDocument myDoc=SpreadsheetDocument.Create(“validator output.xlsx”,SpreadsheetDocumentType.工作簿)){
WorkbookPart WorkbookPart=myDoc.AddWorkbookPart();
workbookpart.工作簿=新工作簿();
WorksheetPart WorksheetPart=workbookpart.AddNewPart();
SheetData SheetData_u2;=新的SheetData();
工作表部分工作表=新工作表(sheetData_u2;);
Sheets Sheets_uz=myDoc.WorkbookPart.Workbook.AppendChild(新工作表());
sheets_uu.AppendChild(新工作表(){
Id=myDoc.WorkbookPart.GetIdOfPart(myDoc.WorkbookPart.WorksheetParts.First()),SheetId=1,Name=“Sheet1”
});
DataValidations DataValidations=新的DataValidations();
DataValidation DataValidation=新的DataValidation(){
Type=DataValidationValues.List,AllowBlank=true,SequenceOfReferences=newlistValue(){InnerText=“F2:F3”}
};
公式1公式=新公式1();
formula.Text=“\”选择1、选择2、选择3\”;
dataValidation.Append(公式);
dataValidations.Append(dataValidation);
worksheetPart.Worksheet.AppendChild(数据验证);
}
}
是否可以修改相同的例程,只打开现有的“validator output.xlsx”文件并执行相同的操作


一个多星期以来,我尽了我所知的一切努力,却一无所获。谢谢您的帮助。

您能详细说明一下吗“是否可以修改相同的例程,以打开现有的“validator output.xlsx”文件并执行相同的操作”,我不理解您的问题。谢谢您的回答。posted方法从头创建工作簿,然后添加验证器。在反复尝试之后,我没有做到的是重写该方法,以便它打开一个路径中已经存在的工作簿,然后添加一个验证器。(换句话说,open vs.create。)好的,你能分享你迄今为止尝试过的代码吗?到目前为止,我尝试过的代码是我在互联网上找到的每一个使用OpenXML将验证程序下拉列表添加到工作表中的示例(大约十几个)。但它们都是在创建工作簿时进行操作的,而不是工作簿已经存在于目录中并只是打开它。我所有试图将其相关片段移植到我的情况的尝试都失败了。有些损坏了工作簿,有些没有损坏,但没有一个验证程序出现在工作簿上。这应该不会比在发布的示例中重新显示一些开始行复杂得多,但所有尝试都失败了。我担心将失败的尝试放在这个线程上会扰乱页面的性质,这就是:上面已经有一个完美工作的示例,比大多数更简洁的问题是,它只适用于新工作簿(Create),而不是已经存在某些内容(Open)的情况。我无法重新设计上面的示例,以便对已经存在的工作簿进行操作。任何解决方案都值得赞赏,可能不仅仅是我。