Click here to Skip to main content
12,625,694 members (38,220 online)
Click here to Skip to main content
Add your own
alternative version

Tagged as


2 bookmarked

Converting Mind Map Plan into an Excel Table

, 25 May 2011 CPOL
Rate this:
Please Sign up or sign in to vote.
Converting Mind Map Plan into an Excel Table

I am a big fan of mind mapping. Especially for planning. When someone asks me to give an estimation for some piece of work, I split it in sub tasks. If I can't predict the particular sub task effort, I just continue splitting until I'm confident. I prefer estimating in days.

I use FreeMind. It's an open source cross platform solution that has everything I need for planning.

Here is a sample plan:


So, the numbers show my estimations and the ticks represent the status (complete). Now I want this to be more presentable for a manager. I was too lazy to fill the Excel spreadsheet manually, so I tried to find some options in FreeMind. And that's what I've found:


There is an XSLT export. I'm not a big fan of XSLT, but this seamed to be the right solution. I've spent some time hacking, and here is my XSLT:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl=""
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
    <xsl:output method="xml" indent="no"/>
    <xsl:template match="/">      
      <xsl:processing-instruction name="mso-application">
        <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
            <Worksheet ss:Name="{/map/node[1]/@TEXT}">
                            <Data ss:Type="String">Task</Data>
                            <Data ss:Type="String">Estimation</Data>
                            <Data ss:Type="String">Status</Data>
                    <xsl:for-each select="//node[count
			(child::icon[starts-with(@BUILTIN, 'full-')]) > 0]">
                                <Data ss:Type="String">
                                    <xsl:for-each select="ancestor-or-self::node
					[count(ancestor::*) > 1]">
                                        <xsl:value-of select="@TEXT"/>. </xsl:for-each>
                                <xsl:attribute name="ss:Formula">
                                <xsl:for-each select="child::icon
				[starts-with(@BUILTIN, 'full-')]">
                                    <xsl:value-of select="substring-after
				(@BUILTIN, '-')"/>+
                                <Data ss:Type="Number"></Data>
                                <Data ss:Type="String">
                                    <xsl:when test="child::icon[@BUILTIN = 'button_ok']">

This turns the previous map into this:


Formatting is done manually, but I will add this to XSLT in future. But currently, it suits me.


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

United Kingdom United Kingdom
No Biography provided

You may also be interested in...

Comments and Discussions

QuestionMindMap *.mm file - does not work for me yet! Pin
CLECOENT16-Mar-12 6:40
memberCLECOENT16-Mar-12 6:40 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.161205.3 | Last Updated 25 May 2011
Article Copyright 2011 by PavelFedulov
Everything else Copyright © CodeProject, 1999-2016
Layout: fixed | fluid