Example that uses the OpenXmlDocument, WordprocessingML, and SpreadsheetML Classes (Dec 19, 2007)

This page presents simple uses of the OpenXmlDocument, WordprocessingML, and SpreadsheetML classes.

This blog is inactive.
New blog: EricWhite.com/blog

Blog TOC

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using Microsoft.Examples.LtxOpenXml;

class Program
{
public static void WriteParagraphs(string filename)
{
Console.WriteLine("Printing Paragraphs");
Console.WriteLine("===================");
Console.WriteLine();
using (WordprocessingML doc = new WordprocessingML(filename))
{
foreach (var p in doc.Paragraphs())
{
Console.WriteLine("Style: {0} Text: >{1}<",
p.StyleName.PadRight(16), p.Text);
foreach (var c in p.Comments())
{
Console.WriteLine(" Comment:");
Console.WriteLine(" Id: {0}", c.Id);
Console.WriteLine(" Author: {0}", c.Author);
Console.WriteLine(" Text: >{0}<", c.Text);
}
}
}
Console.WriteLine();
}

    static void PrintRelationships(List<Relationship> source, int indentLevel)
{
string indent = "".PadRight(indentLevel * 2);
foreach (var r in source)
{
Console.WriteLine("{0}Id: {1}",
indent, r.Id);
Console.WriteLine("{0}RelationshipType: {1}",
indent, r.RelationshipType);
Console.WriteLine("{0}ContentType: {1}",
indent, r.ContentType);
Console.WriteLine("{0}SourceUri: {1}",
indent, r.SourceUri);
Console.WriteLine("{0}TargetUri: {1}",
indent, r.TargetUri);
Console.WriteLine("{0}TargetMode: {1}",
indent, r.TargetMode);
if (r.XDocument != null)
Console.WriteLine("{0}XDocument descendant node count: {1}",
indent, r.XDocument.DescendantNodes().Count());
Console.WriteLine();
if (r.Relationships != null)
PrintRelationships(r.Relationships, indentLevel + 1);
}
}

    static void PrintAllRelationships(string filename)
{
Console.WriteLine("Printing Relationships");
Console.WriteLine("======================");
Console.WriteLine();
using (SpreadsheetML doc = new SpreadsheetML(filename))
{
PrintRelationships(doc.Relationships, 0);
}
}

    static void PrintCells(string filename)
{
Console.WriteLine("Printing Cells of Spreadsheet");
Console.WriteLine("=============================");
Console.WriteLine();
using (SpreadsheetML doc = new SpreadsheetML(filename))
{
foreach (var sh1 in doc.Sheets())
{
Console.WriteLine("Sheet");
Console.WriteLine("=====");
Console.WriteLine("Name:{0}", sh1.Name);
Console.WriteLine("Id:{0}", sh1.Id);
Console.WriteLine("SheetId:{0}", sh1.SheetId);
foreach (var row in sh1.Rows())
{
Console.WriteLine(" RowId:{0}", row.RowId);
Console.WriteLine(" Spans:{0}", row.Spans);
foreach (var cell in row.Cells())
{
Console.WriteLine(" Column:{0}", cell.Column);
if (cell.Type != null)
Console.WriteLine(" Type:{0}", cell.Type);
if (cell.Value != null)
Console.WriteLine(" Value:{0}", cell.Value);
if (cell.Formula != null)
Console.WriteLine(" Formula:>{0}<", cell.Formula);
if (cell.SharedString != null)
Console.WriteLine(" SharedString:>{0}<", cell.SharedString);
}
}
Console.WriteLine();
}
}
}

    public static void Main(string[] args)
{
PrintAllRelationships("Book1.xlsx");
PrintAllRelationships("OfficeXMLMarkupExplained_en.docx");
PrintAllRelationships("Test.docx");
WriteParagraphs("Test.docx");
PrintCells("Book1.xlsx");
}
}