libxl库能无需环境依赖实现后台读写xlsx表格,可用于AHK操控浏览器等采集数据后,用libxl库后台把数据整理保存下来。

 

什么是 libxl 库?

libxl 是一个用于读取和写入 Excel 文件的跨平台库。它允许开发者在无需安装 Microsoft Excel 的情况下,对 Excel 文件进行创建、修改和读取操作。在 AHK 脚本中,使用 libxl 库可以实现对 Excel 文件的后台操作,即无需打开 Excel 应用程序即可对其文件进行处理。

后台读写 Excel 文件是什么意思?

后台读写 Excel 文件是指在不打开 Excel 应用程序界面的情况下,对 Excel 文件进行读取和写入操作。这通常通过调用专门的库(如 libxl)来实现,使得操作更加高效,并减少对用户界面的干扰。这种方式特别适用于需要批量处理 Excel 文件或在服务器环境中进行数据处理的场景。

 

下图就是用libxl库示例自动编辑的效果图:

使用libxl库编辑Excel,也能问GPT获得参考代码,然后再从AHKlibxl库找到对应用法。

例如问GPT:我想用AutoHotkey的DllCall调用,libxl库来修改单元格颜色应该怎么写?

 

v2原版库:https://github.com/thqby/ahk2_lib/tree/master/XL

 

v1版_Excel_xlsx文件读写库【后台读写Excel】+多示例.zip

 

【示例】新建Excel并写入指定内容.ahk

#Include <libxl>
; 转换天黑官方示例:https://github.com/thqby/ahk2_lib/tree/master/XL

libxl.init()  ; 初始化加载libxl.dll,没有指定路径时,默认加载Lib目录
; book := libxl.Load("模板.xlsx"), sheet := book.getSheet(0)  ; 读取Excel写法
book := libxl.New("xlsx"), sheet := book.addSheet("测试报告")
book.setCalcMode("0")

rs1 := book.addRichString()  ; 写入彩色字的示例
ff1 := rs1.addFont(),ff1.setColor(2),ff1.setSize(20),rs1.addText("我", ff1)
ff2 := rs1.addFont(),ff2.setColor(3),ff2.setSize(28),rs1.addText("爱", ff2)
ff3 := rs1.addFont(),ff3.setColor(4),ff3.setSize(12),rs1.addText("AHK", ff3)
SHeet.__item["D6"]:= rs1


SHeet.__item["F3"] :="1"  ; 单元格写入值
SHeet.__item["F3"].width := "30"  ; 列表宽度
sheet.__item["a1"] := {bool:false}
sheet.__item[4, 7] := 543.3  ; 相对位置:实际落在H5
sheet.__item["i2"] := "jview"
sheet.__item["b2"] := {expr: "3*4+2"}
sheet.__item["b4"] := {expr: "9*4", value: 36}
; MsgBox % SHeet.__item["D6"].Value  ; 获取单元格的值
; MsgBox % SHeet.__item["D6"].width  ; 获取宽度【需有内容存在】

; 修改指定单元格的背景颜色写法
; ft := book.addFormat(), ft.setNumFormat(14), ft.setFillPattern(1), ft.setPatternForegroundColor(13)
; sheet.__item["c8"] := {value: book.datePack(2010, 3, 11, 10, 25, 55), format: ft}

ft := book.addFormat(), ft.setNumFormat(14)
sheet.addrToRowCol(row := "c8", row, col := 0)  ; 进行整列操作
sheet.__item["c8"] := {value: book.datePack(2010, 3, 11, 10, 25, 55), format: ft}
sheet.__item[row, col].width := 50

; SHeet.insertCol(1, 2)  ; 插入两列的写法【会打乱现有相对排序,看情况使用】

book.save(A_YYYY "-" A_MM "-" A_DD "_" A_Hour "-" A_Min "-" A_Sec ".xlsx")  ; 保存到年月日文件里
MsgBox,,, % "K2单元格值:" sheet.__item["i2"].value, 1
MsgBox,,, % "B2单元格公式:" sheet.__item["b2"].content.formula, 1
Return

 

LibXL 是一个用来读取、写入和操作 Excel 文件的跨平台库。它支持无需安装 Microsoft Excel 软件即可直接操作 Excel 文件的功能,并且支持 Excel 的两种格式:xls(Excel 97-2003 格式)xlsx(Excel 2007 及以上格式)

 

Excel字体颜色对照表

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。