File import
Import XLSX and CSV files into HyperFormula.
Overview
Section titled “Overview”HyperFormula has no built-in file import functionality. But its factory methods use standard JavaScript data types, for easy integration with any way of importing data.
Import CSV files
Section titled “Import CSV files”To import CSV files, use a third-party CSV parser (e.g., PapaParse or csv-parse). Then pass the result to HyperFormula as a JavaScript array.
Import XLSX files
Section titled “Import XLSX files”To import XLSX files, use a third-party XLSX parser (e.g., ExcelJS or xlsx). Then pass the result to HyperFormula as a JavaScript array.
Example: Import XLSX files in Node
Section titled “Example: Import XLSX files in Node”This example uses ExcelJS to import XLSX files into HyperFormula.
See full example on GitHub.
const ExcelJS = require('exceljs');const { HyperFormula } = require('hyperformula');
async function run(filename) { const xlsxWorkbook = await readXlsxWorkbookFromFile(filename); const sheetsAsJavascriptArrays = convertXlsxWorkbookToJavascriptArrays(xlsxWorkbook) const hf = HyperFormula.buildFromSheets(sheetsAsJavascriptArrays, { licenseKey: 'gpl-v3' });
console.log('Formulas:', hf.getSheetSerialized(0)); console.log('Values: ', hf.getSheetValues(0));}
async function readXlsxWorkbookFromFile(filename) { const workbook = new ExcelJS.Workbook(); await workbook.xlsx.readFile(filename); return workbook;}
function convertXlsxWorkbookToJavascriptArrays(workbook) { const workbookData = {};
workbook.eachSheet((worksheet) => { const sheetDimensions = worksheet.dimensions const sheetData = [];
for (let rowNum = sheetDimensions.top; rowNum <= sheetDimensions.bottom; rowNum++) { const rowData = [];
for (let colNum = sheetDimensions.left; colNum <= sheetDimensions.right; colNum++) { const cell = worksheet.getCell(rowNum, colNum)
const cellData = cell.formula ? `=${cell.formula}` : cell.value; rowData.push(cellData); }
sheetData.push(rowData); }
workbookData[worksheet.name] = sheetData; })
return workbookData;}
run('sample_file.xlsx');