데이터는 workbook입니다
원본 row는 일반 `.xlsx` 파일에서 옵니다. 첫 row는 field 이름이 됩니다.
Interactive walkthrough
모델을 순서대로 따라가 보세요. 각 규칙이 활성화될 때 오른쪽 Excel 예시가 바뀝니다. 화면은 익숙한 Excel 형태를 유지하지만, 동작은 XTL과 conformance fixture로 정의됩니다.
원본 row는 일반 `.xlsx` 파일에서 옵니다. 첫 row는 field 이름이 됩니다.
셀에는 일반 레이아웃과 `{{ [Customer] }}` 같은 XTL 표현식이 함께 들어갑니다.
결과 workbook은 sheet 구조, 숫자 형식, 스타일, 병합 셀을 보존합니다.
Stage 1은 셀 값을 확인하고, Stage 2는 서식과 구조를 위해 canonical OOXML을 비교합니다.
왜 표준인가요?
많은 Excel 자동화 도구는 유용하지만, 동작이 특정 라이브러리가 우연히 하는 일로 정의되는 경우가 많습니다. 그러면 다른 언어로 포팅하기 어렵고, edge case를 논의하기도 어렵습니다.
xl3는 반대로 갑니다. 먼저 prose specification을 두고, 그 다음 실행 가능한 fixture를 두며, reference implementation은 그 뒤에 둡니다. JavaScript package는 유용하지만, 의도된 계약은 XTL과 conformance corpus입니다.
Conformance
Excel에서는 값만 비교하는 것으로 충분하지 않습니다. xl3는 cell-value bootstrap stage와 canonical OOXML 비교를 분리합니다.
worksheet 이름과 관찰 가능한 셀 값을 비교합니다. 언어 의미론 검증에 유용합니다.
npm run conformance
스타일, 숫자 형식, 병합, 구조를 포함한 canonical workbook package를 비교합니다.
xl3-conformance --comparison-stage=2
TypeScript reference implementation은 현재 XTL 0.1 fixture corpus를 통과합니다.
27 / 27 fixtures
Use it
$ npm install xl3
import { convert } from 'xl3';
const outputs = await convert(templateBuffer, dataBuffer);
// OutputFile[] -> formatted .xlsx workbook(s)