p6-xer
Version:
A TypeScript module for parsing and processing Primavera P6 XER files
132 lines (100 loc) • 2.81 kB
Markdown
//img.shields.io/badge/coverage-85%25-green.svg)](https://github.com/wllmtrng/p6-xer)
A TypeScript module for parsing and processing Primavera P6 XER files. This package provides both synchronous and asynchronous methods for parsing XER files and exporting them to Excel format.
- Parse Primavera P6 XER files
- Support for both synchronous and asynchronous operations
- Export to Excel (XLSX) format
- Automatic encoding detection
- Command-line interface (CLI)
- TypeScript support with type definitions
- Handles malformed data gracefully
- Supports empty tables and special characters
## Installation
```bash
npm install p6-xer
```
## Usage
### As a Module
```typescript
import { XerParser } from 'p6-xer';
// Create a parser instance
const parser = new XerParser({
skipEmptyTables: false // optional
});
// Async usage
async function parseXerAsync() {
const data = await parser.parse('path/to/file.xer');
await parser.exportToXlsx(data, {
outputPath: 'output.xlsx',
sheetNamePrefix: 'PREFIX_' // optional
});
}
// Sync usage
function parseXerSync() {
const data = parser.parseSync('path/to/file.xer');
parser.exportToXlsxSync(data, {
outputPath: 'output.xlsx'
});
}
```
```bash
npm install -g p6-xer
xer-parser export input.xer -o output.xlsx
xer-parser export input.xer -o output.xlsx -p PREFIX --skip-empty
```
```typescript
interface XerParserOptions {
encoding?: BufferEncoding; // Optional encoding override
skipEmptyTables?: boolean; // Skip tables with no rows
}
```
- `parse(filePath: string): Promise<XerData>`
- `parseSync(filePath: string): XerData`
- `exportToXlsx(data: XerData, options: ExportOptions): Promise<void>`
- `exportToXlsxSync(data: XerData, options: ExportOptions): void`
```typescript
interface XerData {
tables: XerTable[];
header?: {
version: string;
date: string;
project: string;
id: string;
user: string;
database: string;
system: string;
currency: string;
};
}
interface XerTable {
name: string;
fields: string[];
rows: Record<string, string>[];
}
interface ExportOptions {
outputPath: string;
sheetNamePrefix?: string;
}
```
```
Options:
-o, --output <path> output file path (default: "output.xlsx")
-p, --prefix <prefix> sheet name prefix
--skip-empty skip empty tables
-h, --help display help for command
```
## License
LGPL-3.0-only
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
[![Coverage](https: