Для решения таких проблем лучше всего загрузить Open XML SDK productivity tool и сравнить документы, которые вы сделали до и после внесения изменений. Когда я использую VSTO добавить ActionsPane и я изучить пакет в инструменте я заметил это:
Тогда я удалить ActionsPane с кодом вы дали:
Globals.ThisDocument.XMLSchemaReferences["ActionsPane3"].Delete();
this.Save();
Если мы посмотрим на упаковке в инструменте теперь мы имеем следующее (пожалуйста замечают удивительный свободный почерк):
Теперь, когда мы определили, что нужно удалить, мы можем начать работу с открытым xml sdk (using DocumentFormat.OpenXml.Packaging
, чтобы открыть файл и using DocumentFormat.OpenXml.Wordprocessing
, чтобы изменить его). Всегда удобно держать документ открытым в инструменте, чтобы иметь возможность использовать древовидную структуру для создания кода. Во-первых, я пишу код, чтобы открыть и сохранить документ:
byte[] byteArray = File.ReadAllBytes(@"C:\WorkSpace\test\WordTest.docx");
using (var stream = new MemoryStream())
{
stream.Write(byteArray, 0, byteArray.Length);
using (WordprocessingDocument doc = WordprocessingDocument.Open(stream, true))
{
//Logic here
}
using (FileStream fs = new FileStream(@"C:\WorkSpace\test\WordTest_modified.docx",
FileMode.Create))
{
stream.WriteTo(fs);
}
}
Для удаления AttachedSchema
вам понадобится следующий код:
doc.MainDocumentPart.DocumentSettingsPart
.Settings
.GetFirstChild<AttachedSchema>()
.Remove();
Как вы видите, это очень удобно, чтобы написать это с древовидной структурой следующего тебе. Для удаления SchemaReference
вам понадобится этот код:
doc.MainDocumentPart.CustomXmlParts.First()
.CustomXmlPropertiesPart
.DataStoreItem
.SchemaReferences
.FirstChild
.Remove();
И там вы идете, то же самое, как если бы вы удалили его в приложении VSTO.
Edit: Если я выполнить следующую строку, чтобы удалить все /docProps/custom.xml
панель действий исчезла:
doc.CustomFilePropertiesPart.Properties.RemoveAllChildren();
я не могу проверить, если это ожидаемое поведение для вас, потому что я использую тест документ (никаких заметных изменений в размере), но теперь, когда моя панель действий исчезла, возможно, это то, что вы ищете (свойства содержат ссылку на мой локальный файл vsto). Я бы хотел, чтобы Microsoft немного документировала этот материал.
Обычный способ обнаружить это - иметь документ как с, так и без ActionPane. Используйте функцию сравнения в инструменте Open XML SDK Productivity Tool, чтобы узнать разницу в базовом XML, а также код, необходимый для создания второго документа с первого. –