59 lines
1.6 KiB
Bash
59 lines
1.6 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
# https://docs.sheetjs.com/docs/demos/engines/v8#c
|
||
|
|
|
||
|
|
set -e
|
||
|
|
|
||
|
|
cd /tmp
|
||
|
|
rm -rf SheetJSClearScript
|
||
|
|
mkdir -p SheetJSClearScript
|
||
|
|
cd SheetJSClearScript
|
||
|
|
|
||
|
|
# Disable .NET telemetry
|
||
|
|
export DOTNET_CLI_TELEMETRY_OPTOUT=1
|
||
|
|
|
||
|
|
# Create new console project
|
||
|
|
dotnet new console
|
||
|
|
dotnet run
|
||
|
|
|
||
|
|
# Add ClearScript package
|
||
|
|
dotnet add package Microsoft.ClearScript.Complete --version 7.5.0
|
||
|
|
|
||
|
|
# Download SheetJS and test file
|
||
|
|
curl -LO https://cdn.sheetjs.com/xlsx-latest/package/dist/xlsx.full.min.js
|
||
|
|
curl -LO https://docs.sheetjs.com/pres.xlsx
|
||
|
|
|
||
|
|
# Replace Program.cs with the demo code
|
||
|
|
cat > Program.cs << 'EOF'
|
||
|
|
using Microsoft.ClearScript.JavaScript;
|
||
|
|
using Microsoft.ClearScript.V8;
|
||
|
|
|
||
|
|
/* initialize ClearScript */
|
||
|
|
var engine = new V8ScriptEngine();
|
||
|
|
|
||
|
|
/* Load SheetJS Scripts */
|
||
|
|
engine.Evaluate(File.ReadAllText("xlsx.full.min.js"));
|
||
|
|
Console.WriteLine("SheetJS version {0}", engine.Evaluate("XLSX.version"));
|
||
|
|
|
||
|
|
/* Read and Parse File */
|
||
|
|
byte[] filedata = File.ReadAllBytes(args[0]);
|
||
|
|
engine.Script.buf = engine.Script.Array.from(filedata);
|
||
|
|
engine.Evaluate("var wb = XLSX.read(buf, {type: 'array'});");
|
||
|
|
|
||
|
|
/* Print CSV of first worksheet */
|
||
|
|
engine.Evaluate("var ws = wb.Sheets[wb.SheetNames[0]];");
|
||
|
|
var csv = engine.Evaluate("XLSX.utils.sheet_to_csv(ws)");
|
||
|
|
Console.Write(csv);
|
||
|
|
|
||
|
|
/* Generate XLSB file and save to SheetJSClearScript.xlsb */
|
||
|
|
var xlsb = (ITypedArray<byte>)engine.Evaluate("XLSX.write(wb, {bookType: 'xlsb', type: 'buffer'})");
|
||
|
|
File.WriteAllBytes("SheetJSClearScript.xlsb", xlsb.ToArray());
|
||
|
|
|
||
|
|
Console.WriteLine("\nOutput saved to SheetJSClearScript.xlsb");
|
||
|
|
EOF
|
||
|
|
|
||
|
|
# Run the program
|
||
|
|
dotnet run pres.xlsx
|
||
|
|
|
||
|
|
# Verify the XLSB file is valid
|
||
|
|
npx -y xlsx-cli SheetJSClearScript.xlsb
|