Dark Mode

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Home

Jump to bottom
Olivier Nizet edited this page Sep 24, 2024 * 5 revisions

How to start ?

Create a new console application. Add a reference to NuGet pacakge DocumentFormat.OpenXml.dll. Add an html file and fill it with:

>
<html>
<head>
<title>title>
head>
<body>
Looks how cool is <font size="x-large"><b>Open Xmlb>font>.
Now with <font color="red"><u>HtmlToOpenXmlu>font>, it nevers been so easy to convert html.
<p>
If you like it, add me a rating on <a href="https://github.com/onizet/html2openxml">githuba>
p>
<hr>
body>
html>

Add a Resources.resx component and add your html file inside it.

In Program.cs, add these lines of code:

using System.IO;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
using HtmlToOpenXml;
...

static void Main(string[]() args)
{
const string filename = "test.docx";
string html = Properties.Resources.DemoHtml;

if (File.Exists(filename)) File.Delete(filename);

using (MemoryStream generatedDocument = new MemoryStream())
{
using (WordprocessingDocument package = WordprocessingDocument.Create(generatedDocument, WordprocessingDocumentType.Document))
{
MainDocumentPart mainPart = package.MainDocumentPart;
if (mainPart == null)
{
mainPart = package.AddMainDocumentPart();
new Document(new Body()).Save(mainPart);
}

HtmlConverter converter = new HtmlConverter(mainPart);
await converter.ParseBody(html);

mainPart.Document.Save();
}

File.WriteAllBytes(filename, generatedDocument.ToArray());
}

System.Diagnostics.Process.Start(filename);
}

Run your application and you will obtain:

See Also

Clone this wiki locally