xls-rs for 4D
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