Skip to main content

Search OfficeIMO

Enter a topic, API type, or PowerShell command.

Meeting minutes and actions

Publish a meeting record that makes the follow-up clear. The example separates decisions from actions, gives each action an owner and due date, and adds a running header and footer.

Start with
Meeting details, decisions, and action items
Generate
DOCX + PDF
Generated Word example: Meeting minutes and actions
Page 1 · Generated by the example below

How it works

  1. Set up the running furniture

    Create headers and footers before adding the meeting content. Put the team name in the header and the working-copy label in the footer.

  2. Capture decisions separately

    Use a bulleted list for agreed decisions so readers can distinguish them from work that is still pending.

  3. Assign the follow-up

    Write the actions, owners, and due dates into a table, then finish with the purpose of the next meeting.

The C# source

This is the complete example file used to generate the download. The walkthrough runner creates the output directory and produces the additional previews.

using System.IO;
using OfficeIMO.Word;

namespace OfficeIMO.Examples.Showcase.Workflows;

/// <summary>Turns meeting decisions and actions into an editable record with a running header.</summary>
internal static class MeetingMinutes {
    internal static void Create(string folder) {
        using WordDocument document = WordDocument.Create(Path.Combine(folder, "example.docx"));
        document.Settings.FontFamily = "Carlito";
        document.Settings.FontSize = 11;
        document.AddHeadersAndFooters();
        document.Header!.Default!.AddParagraph("NORTHWIND / DELIVERY REVIEW");
        document.Footer!.Default!.AddParagraph("Sample meeting record | Internal working copy");
        document.AddParagraph("Delivery review minutes").Style = WordParagraphStyles.Heading1;
        document.AddParagraph("14 September 2026 | Facilitator: Jordan Lee | Duration: 30 minutes");
        document.AddParagraph("Attendees: Product, Engineering, Operations and Support.");

        document.AddParagraph("Decisions").Style = WordParagraphStyles.Heading2;
        WordList decisions = document.AddList(WordListStyle.Bulleted);
        decisions.AddItem("Start the pilot with the support team before inviting all departments.");
        decisions.AddItem("Keep the current escalation route during the first two weeks.");
        document.AddParagraph("Actions to follow up").Style = WordParagraphStyles.Heading2;
        string[,] values = {
            { "Action", "Owner", "Due" },
            { "Confirm pilot participants", "Product", "18 September" },
            { "Publish the support guide", "Support", "21 September" },
            { "Exercise recovery", "Operations", "23 September" }
        };
        WordTable actions = document.AddTable(4, 3, WordTableStyle.TableGrid);
        for (int row = 0; row < 4; row++) {
            for (int column = 0; column < 3; column++) {
                actions.Rows[row].Cells[column].Paragraphs[0].Text = values[row, column];
                actions.Rows[row].Cells[column].Paragraphs[0].Bold = row == 0;
                if (row == 0) actions.Rows[row].Cells[column].ShadingFillColorHex = "E8EEF8";
            }
        }
        document.AddParagraph("Next meeting").Style = WordParagraphStyles.Heading2;
        document.AddParagraph("28 September: review pilot feedback and decide whether to expand access.");
        foreach (WordParagraph paragraph in document.Paragraphs) {
            paragraph.FontFamily = "Carlito";
            paragraph.FontSize = 11;
            paragraph.LineSpacingAfterPoints = 7;
            if (paragraph.Style == WordParagraphStyles.Heading1) {
                paragraph.FontSize = 26;
                paragraph.Bold = true;
                paragraph.LineSpacingAfterPoints = 12;
            } else if (paragraph.Style == WordParagraphStyles.Heading2) {
                paragraph.FontSize = 15;
                paragraph.Bold = true;
                paragraph.LineSpacingBeforePoints = 12;
                paragraph.LineSpacingAfterPoints = 6;
            }
        }
        foreach (WordTable styledTable in document.Tables) {
            styledTable.SetWidthPercentage(100);
            styledTable.SetColumnWidthsPercentage(50, 25, 25);
            foreach (var row in styledTable.Rows) {
                foreach (var cell in row.Cells) {
                    cell.MarginTopCentimeters = 0.10;
                    cell.MarginBottomCentimeters = 0.10;
                    foreach (var paragraph in cell.Paragraphs) {
                        paragraph.FontFamily = "Carlito";
                        paragraph.FontSize = 11;
                        paragraph.LineSpacingAfterPoints = 3;
                    }
                }
            }
        }
        document.Save();
    }
}
Open the C# source file

Run it from the source checkout

Clone the OfficeIMO repository and run this command from its root with the .NET 10 SDK. The first run restores the example project's dependencies.

dotnet run --project OfficeIMO.Examples -f net10.0 -- --showcase-workflows --showcase-example word-meeting-minutes

The files are written to OfficeIMO.Examples/bin/Debug/net10.0/Documents/Workflows/word-meeting-minutes/. To use the example in your application, start with the Word guide and its package setup.

Downloads and scope

What the preview shows

The linked C# example generates this file. The runner reopens and validates the DOCX, exports a PDF, and the preview renders that PDF.

What to keep in mind

The sample is an editable meeting record. It does not create calendar events, send reminders, or synchronize action status.

Word API reference · Artifact hashes and provenance

Continue with another example

Example source

Download source