It was more difficult than we expected. Our fingers are exhausted, and we won't even talk about the truly frightening quantities of Mt. Dew that were consumed. The end result: a shiny pile of ones and zeros we think you'll want to meet.
Previously I hinted that Omar, David and myself have been collaborating on a nicely abstracted managed assembly that provides an object model for importing data into OneNote. But as of today, it lives!
So what does it do, you ask? Enough talk:
using Microsoft.Office.OneNote; namespace Example { class TrivialImport { public static void Main() { // Create a new page in the section "General", with the // title "Import Example". Page p = new Page("General.one", "Import Example"); // Create a new Outline, and add some content to it: OutlineObject outline = new OutlineObject(); outline.AddContent(new HtmlContent("Hello <i>world</i>!")); // Add the outline to our page: p.AddObject(outline); // Commit the changes to OneNote, and set the actively viewed page: p.Commit(); p.NavigateTo(); } } }
Try it out for yourself: the assembly, source code, documentation, and class diagrams are all available for download here.
(Note that this is a work in progress, and as a result you may encounter the occasional bug or two. So if it eats your homework, erases all of your Tivo'd episodes of Friends, or breaks up with your girlfriend -- you have been warned. Of course, if this does occur, let me know.)
Go wild; but be careful: once you start importing, it's hard to stop.
[3/22/06: Updated URLs to point to new site.]