xls-rs for 4D

Version:
20.0.4
License:

MIT License

Last Update:

Description

xls-rs is a Rust CLI for reading, writing, converting, and transforming spreadsheet-like files. This component provides a class-based generic API with callback functions to use xls-rs from 4D.

README

xls-rs

aknowledgements: yingkitw/xls-rs

Abstract

yingkitw/xls-rs is a Rust CLI for reading, writing, converting, and transforming spreadsheet-like files. This component provides a wrapper class for calling it via SystemWorker.

Usage

Create a project method for callback (this is optional)

// OnData
#DECLARE($worker : 4D.SystemWorker; $params : Object)

var $text : Text
$text:=$worker.response
$file:=$params.context

OPEN URL($file.platformPath)

Instantiate cs.xls_rs.xls_rs and pass one or more task objects:

#DECLARE($params : Object)

If ($params=Null)
    
    CALL WORKER(1; Current method name; {})
    
Else 
    
    $events:={}
    $events.onResponse:=Formula(onData)
    $events.onError:=Formula(ALERT("error!"))
    
    var $xls_rs : cs.xls_rs.xls_rs
    $xls_rs:=cs.xls_rs.xls_rs.new(cs.xls_rs._xls_rs_Controller)
    
    $folder:=Folder(Temporary folder; fk platform path).folder(Generate UUID)
    $folder.create()
    $in:=$folder.file("sample.csv")
    $csv:="Product,Category,Price,Quantity,Date\nLaptop,Electronics,1200,1,2026-01-01\nMouse,Electronics,25,2,2026-01-02\nDesk,Furniture,300,1,2026-01-03\nChair,Furniture,150,4,2026-01-04\nPen,Stationery,2,10,2026-01-05\nLamp,Home,45,1,2026-01-06\n"
    $in.setText($csv)
    
    $out:=Folder(fk desktop folder).file("sample.xlsx")
    
    $tasks:=[]
    
    $tasks.push(["convert"; "--input"; $in; "--output"; $out; {data: $out; file: Null}])
    $results:=$xls_rs.execute($tasks; $events)
    
End if