@wink-ai/wink-office
v0.1.22
Published
Excel/PPT/Word manipulation library for AI-powered code generation
Readme
wink-office
Excel/PPT/Word manipulation library for AI-powered code generation.
Features
- Extract charts from Excel files
- Parse dashboard layouts from Excel sheets
- Support for complex chart types (line, bar, pie, scatter, etc.)
- Advanced axis properties mapping (log scale, label rotation, tick intervals, display units, etc.)
- Convert Excel charts to ECharts configuration
- Fast and deep parsing modes for different use cases
- Type-safe API with full TypeScript support
Installation
bun add wink-officeUsage
Extract Charts
import { extractCharts } from 'wink-office';
const result = await extractCharts('path/to/file.xlsx');
console.log(result.charts);
// [
// {
// id: 'chart1',
// sheet: 'Sheet1',
// type: 'bar',
// layout: { position: { x: 0, y: 0 }, size: { width: 400, height: 300 } },
// data: { series: [...] }
// }
// ]Extract Dashboard Layout
import { extractDashboard } from 'wink-office';
const { layout, charts } = await extractDashboard('path/to/file.xlsx');
console.log(layout);
// {
// pageConfig: { width: 1920, height: 1080, colNum: 12, ... },
// layout: [
// { i: 'box_0', x: 0, y: 0, w: 4, h: 2, title: 'Sales Chart' }
// ]
// }Extract Specific Sheet
import { extractSheet } from 'wink-office';
const result = await extractSheet('path/to/file.xlsx', 'Sheet2', {
associateCharts: true,
validation: 'strict'
});Convert to ECharts
import { extractCharts } from 'wink-office';
import { EChartsConverter } from 'wink-office';
const result = await extractCharts('path/to/file.xlsx');
const echartsOption = EChartsConverter.convertToECharts(result.charts[0]);
// Use with ECharts
myChart.setOption(echartsOption);See docs/features/chart-axis-advanced-properties.md for details on advanced axis properties.
API Documentation
Main Functions
extractCharts(filePath, options?)- Extract all charts from Excel fileextractDashboard(filePath, sheetName?, options?)- Extract layout with chartsextractSheet(filePath, sheetName, options?)- Extract specific sheet data
Options
interface ExtractionOptions {
onError?: 'throw' | 'skip' | 'partial'; // Error handling mode
validation?: 'strict' | 'loose'; // Validation level
associateCharts?: boolean; // Link charts to layout blocks
}Development
# Install dependencies
bun install
# Run tests
bun test
# Type check
bun run lint
# Run both
bun run checkProject Structure
src/
├── api/ # Public API layer
├── dashboard/ # Core functionality
│ ├── chart/ # Chart parsing (fast/deep/merge)
│ ├── layout/ # Layout extraction
│ └── output/ # Output standardization
└── shared/ # Shared utilities
test/
├── unit/ # Unit tests
├── integration/ # Integration tests
└── fixtures/ # Test dataLicense
MIT
