Microsoft Project Import And Export
Microsoft Project conversion is shipped as an optional package so applications that do not exchange Project files do not include the XML or native MPP parser.
pnpm add @revolist/revogrid-gantt-mspInstall the plugin
Section titled “Install the plugin”Register GanttMspImportPlugin beside the Enterprise GanttPlugin:
import { GanttPlugin } from '@revolist/revogrid-enterprise';import { GanttMspImportPlugin } from '@revolist/revogrid-gantt-msp';
grid.plugins = [GanttPlugin, GanttMspImportPlugin];Get the installed converter and import a file selected by the user:
const plugins = await grid.getPlugins();const converter = plugins.find( (plugin): plugin is GanttMspImportPlugin => plugin instanceof GanttMspImportPlugin,);
const result = await converter?.importFile(file, { projectId: 'customer-rollout', currency: 'EUR', timeZone: 'Europe/Lisbon',});
console.table(result?.warnings);The plugin applies imported tasks and project collections through the same reactive properties used by GanttPlugin. It returns the complete ProjectSnapshot as well, allowing the application to persist or inspect the imported data.
Convert without a grid
Section titled “Convert without a grid”The framework-neutral conversion functions can be used in upload handlers, persistence services, tests, and export actions:
import { exportMicrosoftProjectXml, importMicrosoftProjectMpp, importMicrosoftProjectXml,} from '@revolist/revogrid-gantt-msp';
const { project, warnings } = importMicrosoftProjectXml(xml, { projectId: 'customer-rollout',});
const exported = exportMicrosoftProjectXml(project);downloadXml(exported.xml);
const native = await importMicrosoftProjectMpp(await mppFile.arrayBuffer(), { projectId: 'native-customer-rollout',});File support
Section titled “File support”| Format | Import | Export | Notes |
| --- | --- | --- | --- |
| Microsoft Project XML (.xml) | Yes | Yes | Full initial XML mapping. |
| MPP14 (.mpp) | Yes | No | Native format produced by Project 2010 and later. |
| MPP8, MPP9, or MPP12 | No | No | Returns unsupported-mpp-version. |
| Encrypted MPP | No | No | Returns encrypted-mpp-not-supported. |
importFile() detects the OLE compound-document signature rather than trusting the extension. Browser File objects already provide the required arrayBuffer() method. A custom .mpp file-like object without binary access returns binary-reader-unavailable, and invalid native content returns invalid-mpp. Custom XML-only file-like objects can continue implementing only name and text().
Supported XML data
Section titled “Supported XML data”The adapter maps:
- task hierarchy, names, dates, durations, and notes;
- tasks, summary tasks, and milestones;
- completion progress;
- finish-to-start, start-to-start, finish-to-finish, and start-to-finish dependencies;
- the first task baseline exposed by the MSP XML converter.
The conversion result includes warnings when a safe default is introduced or a field cannot be represented. The initial adapter creates a standard Monday-Friday calendar because the underlying converter does not expose Microsoft Project calendar definitions.
Native MPP14 data
Section titled “Native MPP14 data”The native importer maps task names, hierarchy, dates, durations, summary tasks, milestones, finish-to-start, start-to-start, finish-to-finish, and start-to-finish dependencies, plus first-baseline dates. It generates WBS codes and a standard Monday-Friday calendar.
The first native release intentionally defaults progress and dependency lag to zero, and omits notes, resources, assignments, Microsoft Project calendars, and additional baselines. The returned unsupported-fields warning makes this loss explicit. Native MPP export is not supported; export XML when the resulting schedule must be opened in Microsoft Project.
The converter package ships a genuine legacy sample.mpp under examples/third-party/mpxj/ for signature and version testing. The fixture comes from MPXJ's LGPL-2.1 test corpus and includes its upstream license and exact provenance. Because it is MPP9, importing it returns unsupported-mpp-version.