Skip to content

k.utils.office

Office document processing (Excel)

Overview

k.utils.office currently exposes excel child objects, read and write .xls / .xlsx (site files or bytes).

ts
const names = k.utils.office.excel.readSheetNames("data/report.xlsx")
const rows = k.utils.office.excel.readAsObjects("data/report.xlsx", "Sheet1")

Excel common methods

methodillustrate
getWorkBook(fileName)Open workbook object
getWorkBookFromBytes(buffer, extension)open from bytes
createNewWorkbook(extension)Create new .xls or .xlsx
readSheetNames / readSheetNamesFromBytesList of worksheet names
readAsObjects / readAsObjectsFromBytesRead as an object array (the first line is used as the field name)
readAsArrays / readAsArraysFromBytesRead as a two-dimensional array
ParameterTypeRequiredDescription
fileNamestringYesSite Excel file path
buffernumber[]YesExcel file bytes
extensionstringYesExtension, .xls or .xlsx
sheetNamestringNoSheet name; reads the first sheet when omitted
rangeKExcelReadRangeNoRead range
MethodReturn
getWorkBook(fileName)KWorkBook
getWorkBookFromBytes(buffer, extension)KWorkBook
createNewWorkbook(extension?)KWorkBook
readSheetNames(fileName) / readSheetNamesFromBytes(buffer, extension)string[]
readAsObjects(...) / readAsObjectsFromBytes(...)Record<string, any>[]
readAsArrays(...) / readAsArraysFromBytes(...)any[][]

Optional KExcelReadRange: firstRowIndex, lastRowIndex, firstColumnIndex, lastColumnIndex.

ts
const names = k.utils.office.excel.readSheetNames("data/report.xlsx")
const rows = k.utils.office.excel.readAsObjects("data/report.xlsx", names[0], {
    firstRowIndex: 0,
    firstColumnIndex: 0,
    lastColumnIndex: 3
})

Read from uploaded file bytes:

ts
const file = k.request.files[0]
const rows = k.utils.office.excel.readAsArraysFromBytes(file.bytes, ".xlsx", "Sheet1")

KWorkBook/KSheet

Workbooks: sheets, createSheet(name), write(fileName), readAsBytes().

Worksheets: getObjectData(range), fillObjectData(json), fillArrayData(arrays), rows, etc.

Member / MethodReturnDescription
book.sheetsKSheet[]Sheet list
book.numberOfSheetsnumberSheet count
book.createSheet(name)KSheetCreate a sheet
book.write(fileName)voidSave to a site file
book.readAsBytes()number[]Read workbook bytes
sheet.getObjectData(range?)Record<string, any>[]Read object rows
sheet.getArrayData(range?)any[][]Read array rows
sheet.fillObjectData(json)voidFill from object-array JSON
sheet.fillArrayData(arrays)voidFill from a two-dimensional array
ts
const book = k.utils.office.excel.createNewWorkbook(".xlsx")
const sheet = book.createSheet("Orders")
sheet.fillArrayData([
    ["OrderNo", "Amount"],
    ["SO20260702001", 129.00]
])

book.write("exports/orders.xlsx")
return k.file.get("exports/orders.xlsx")