Ich möchte Text aus meiner Anwendung in MS OneNote exportieren und Office-Versionen unterstützen: 2007, 2010, 2013 und 2016. Ich verwende die Microsoft.Office.Interop.OneNote.dll Version:12.0.
0, wie sie mit allen Office-Versionen geliefert wird.Exportieren nach OneNote mit C#
Das Problem ist, wenn ich versuche, eine neue OneNote-Seite in Office erstellen 2013 "CreateNewPage" Ich erhalte die Ausnahme mit:
hrSectionReadOnly 0x8004200b
Der Abschnitt ist schreibgeschützt.
kann ich ein Attribut readOnly="true"
Ich habe versucht, sehen, es zu ändern, und es ist nicht zu helfen. Immer noch die gleiche Ausnahme.
Wenn ich referenziere Microsoft.Office.Interop.OneNote.dll Version:15.0.0
dann funktioniert alles gut.
Irgendwelche Ideen, warum es nur gelesen wird und wie kann ich das Problem überwinden? Hier
ist Codebeispiel:
string strPath;
string sectionId;
string xml;
// points directly on OneNote's Unfiled section
_app.GetSpecialLocation(SpecialLocation.slUnfiledNotesSection, out strPath);
_app.OpenHierarchy(strPath, "", out sectionId, CreateFileType.cftSection);
_app.CreateNewPage(sectionId, out _sectionId, NewPageStyle.npsDefault);
var strImportXml = @"<?xml version='1.0' ?>
<one:Page xmlns:one='" + _oneNoteNamespace + "' ID='" + _sectionId + @"'>
<one:Title>
<one:OE>
<one:T>
<![CDATA[
]]>
</one:T>
</one:OE>
</one:Title>
<one:Outline>
<one:Meta name='Rumba' content='" + new Random().Next() + @"' />
<one:OEChildren>
<one:HTMLBlock>
<one:Data>
<![CDATA[My sample page]]>
</one:Data>
</one:HTMLBlock>
</one:OEChildren>
</one:Outline>
</one:Page>";
_app.UpdatePageContent(strImportXml, DateTime.MinValue);
_app.NavigateTo(_sectionId, String.Empty, true);
I don‘ Ich möchte eine neue Datei schreiben. Ich möchte Microsoft.Office.Interop.OneNote.dll Version: 12.0.0 und anhängen/erstellen Seite in bestehenden OneNote-Dokument. Ich habe die Frage mit dem Codebeispiel (siehe oben) – xbuster
aktualisiert, um die Daten anzuhängen, die Sie File.AppendAllLines verwenden können (savingFileName, sehen Sie die oben redigierten Codelines); –
Ich werde den bearbeiteten Code als zweite Antwort –