@flowkscai/luckyexcel
v1.2.1
Published
A high-performance excel import and export library for Luckysheet and Univer, optimized for significantly faster processing speed and lower memory usage compared to the original.
Readme
English| 简体中文
[!IMPORTANT] This project is a refined fork of the following repositories:
- zwight/Luckyexcel (v1.1.6, commit 88a44f9)
- dream-num/Luckyexcel (base commit 5a0be42 dated 2022-06-10)
Introduction
This project is based on the import of Luckyexcel, and adds the conversion of Luckysheet data structure into Univer data structure. It can directly import and return the data structure required by Univer. In addition, this project also implements the export function based on Univer, supporting the export of .xlsx and .csv format files
Features
Support Univer import excel and export excel/csv adapter list
- Cell style
- Cell border
- Cell format, such as number format, date, percentage, etc.
- Formula
- Conditional Formatting
- Sort
- Filter
- Cell image, floating image
- Performance: Up to 70% speedup in XML parsing and highly optimized Luckysheet to Univer conversion
- Build: Support tree-shaking for ESM build (lazy loading
exceljs)
Plan
The goal is to support all features supported by Univer
- Pivot table
- Chart
- Annotation
Usage
CDN
<script src="https://unpkg.com/@univerjs/core/lib/umd/index.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@flowkscai/luckyexcel/dist/luckyexcel.umd.min.js"></script>
<script>
// Univer import Excel file
LuckyExcel.transformExcelToUniver(
file,
async (exportJson: any) => {
// After obtaining the converted table data, use univer to initialize, or update the existing univer workbook
// Note: Univer needs to introduce dependent packages and initialize the table container before it can be used
univer.createUnit<IWorkbookData, Workbook>(
UniverInstanceType.UNIVER_SHEET,
exportJson || {}
);
},
(error: any) => {
console.log(error);
}
);
// Univer import CSV file
LuckyExcel.transformCsvToUniver(
file,
async (data: any) => {
// After obtaining the converted table data, use univer to initialize, or update the existing univer workbook
// Note: Univer needs to introduce dependent packages and initialize the table container before it can be used
univer.createUnit<IWorkbookData, Workbook>(
UniverInstanceType.UNIVER_SHEET,
data || {}
);
},
(error: any) => {
console.log(error);
}
);
// Export Univer to CSV file
// snapshot is the Univer snapshot data, getBuffer: true will not download the file, only return the csv content, false will download directly
// sheetName: Because Univer may have multiple sheets, csv does not have sheets, if sheetName has a value, only the data of the specified sheet name will be downloaded. If it is not passed, all sheets will be downloaded. The file name is ${fileName}_${sheet.name}
LuckyExcel.transformUniverToCsv({
snapshot,
fileName,
getBuffer: true,
sheetName: snapshot.sheetOrder[0],
success: (buffer: string | { [key: string]: string }) => {
console.log('success');
},
error: (error: Error) => {
console.log('error', error);
},
});
// Export Univer to XLSX file
// getBuffer: true will not download the file, only return the file's buffer data, false will download directly
LuckyExcel.transformUniverToExcel({
snapshot,
fileName,
getBuffer: true,
success: (buffer: Buffer) => {
console.log('success');
},
error: (error: Error) => {
console.log('error', error);
},
});
</script>Case univer-import-export shows the detailed usage
ES and Node.js
Installation
npm install @flowkscai/luckyexcelES import
import LuckyExcel from '@flowkscai/luckyexcel'
// After getting the xlsx file
LuckyExcel.transformExcelToUniver(
file,
async (exportJson: any) => {
// Get the worksheet data after conversion
},
(error: any) => {
// handle error if any thrown
}
);Development
Requirements
Node.js Version >= 6
Installation
npm install -g gulp-cli
npm installDevelopment
npm run devPackage
npm run buildA third-party plug-in is used in the project: JSZip, thanks!
Authors and acknowledgment
License
Copyright (c) 2020-present, flowkscai
