Example code:
Code: Select all
; libxlsxwriter -- https://github.com/jmcnamara/libxlsxwriter
; libxlsxwriter.dll -- http://www.rapideuphoria.com/libxlsxwriter.zip
#NoEnv
SetWorkingDir %A_ScriptDir%
SetBatchLines, -1
__load_dll("libxlsxwriter.dll")
workbook := workbook_new("demo.xlsx")
worksheet := workbook_add_worksheet(workbook, "")
format := workbook_add_format(workbook)
format_set_bold(format)
format_set_bg_color(format, 0x00ff00)
worksheet_write_string(worksheet, 0, 0, "Hello", 0)
worksheet_write_string(worksheet, 1, 0, "World", format)
worksheet_write_number(worksheet, 2, 0, 123, 0)
worksheet_write_number(worksheet, 3, 0, 123.456, 0)
workbook_close(workbook)
return
__load_dll(filename) {
DllCall("LoadLibrary", "Str", filename, "Ptr")
}
workbook_new(filename) {
static _filename
StrPutVar(filename, _filename, "utf-8")
return DllCall("libxlsxwriter\new_workbook", "str", _filename, "cdecl ptr")
}
new_workbook(filename) {
static _filename
StrPutVar(filename, _filename, "utf-8")
return DllCall("libxlsxwriter\new_workbook", "str", _filename, "cdecl ptr")
}
workbook_add_worksheet(workbook, sheetname) {
StrPutVar(sheetname, _sheetname, "utf-8")
return DllCall("libxlsxwriter\workbook_add_worksheet"
, "ptr", workbook
, "ptr", (sheetname="") ? 0 : &_sheetname
, "cdecl ptr")
}
workbook_add_format(workbook) {
return DllCall("libxlsxwriter\workbook_add_format", "ptr", workbook, "cdecl ptr")
}
format_set_bold(format) {
return DllCall("libxlsxwriter\format_set_bold", "ptr", format, "cdecl")
}
format_set_bg_color(format, color) {
DllCall("libxlsxwriter\format_set_bg_color", "ptr", format, "int", color, "cdecl")
}
worksheet_set_column(worksheet, first_col, last_col, width, format) {
return DllCall("libxlsxwriter\worksheet_set_column"
, "ptr", worksheet
, "ushort", first_col
, "ushort", last_col
, "double", width
, "ptr", format
, "cdecl")
}
worksheet_write_string(worksheet, row, col, string, format) {
StrPutVar(string, _string, "utf-8")
return DllCall("libxlsxwriter\worksheet_write_string"
, "ptr", worksheet
, "uint", row
, "ushort", col
, "ptr", &_string
, "ptr", format
, "cdecl")
}
worksheet_write_number(worksheet, row, col, number, format) {
return DllCall("libxlsxwriter\worksheet_write_number"
, "ptr", worksheet
, "uint", row
, "ushort", col
, "double", number
, "ptr", format
, "cdecl")
}
workbook_close(workbook) {
return DllCall("libxlsxwriter\workbook_close", "ptr", workbook, "cdecl")
}
; From /docs/commands/StrPutGet.htm
StrPutVar(string, ByRef var, encoding)
{
; Ensure capacity.
VarSetCapacity( var, StrPut(string, encoding)
; StrPut returns char count, but VarSetCapacity needs bytes.
* ((encoding="utf-16"||encoding="cp1200") ? 2 : 1) )
; Copy or convert the string.
return StrPut(string, &var, encoding)
}
(Note: This dll was found from http://www.rapideuphoria.com/libxlsxwriter.zip, it may not the latest version.)