aardio - libxl库,一个dll操作excel

news2025/1/14 0:58:27

经常用到excel操作,也有几个现成的库能实现我需要的功能,但用起来总是感觉不顺手。

于是便抽了两天时间,在aaz.libxl库的基础上,按照我的使用习惯进行了修改。

以后再也不用为操作excel发愁啦。

下载地址:http://chengxu.online  →aardio资源下载→libxl.rar

解压缩将文件放于:\lib\godking\libxl

1、大名鼎鼎的libxl,封装为aardio库,便于使用。

2、为了节约劳动力,在aaz.libxl库的基础上进行修改,在此对作者表示感谢。

3、dll版本为4.0.4.0。

4、例程代码效果如下:

一、自定义数字格式

import godking.libxl;

var book = godking.libxl.new("d:\custom.xls","各种数字格式")
var sheet = book.sheet();
var format = {};
var numformat = {
    "0.0";
    "0.00";
    "0.000";
    "0.0000 元";
    "#,###.00 $";
    "#,###.00 $[Black][<1000];#,###.00 $[Red][>=1000]";
    "合计 ##,###.00 元"
}
for(i=1;#numformat;1){
	format[i] = book.addFormat();
	format[i].numFormat = book.addNumFormat(numformat[i])
	// 以上两句可以合并为一句实现,如下:
	// format[i] = book.addFormat({ numFormat = book.addNumFormat(numformat[i]) });
}
sheet.setValue( 1, 1, 25.718, format[1] )
sheet.setValue( 2, 1, 25.718, format[2] )
sheet.setValue( 3, 1, 25.718, format[3] )
sheet.setValue( 4, 1, 25.718, format[4] )
sheet.setValue( 5, 1, 1800.5, format[5] )
sheet.setValue( 6, 1, 500   , format[6] )
sheet.setValue( 7, 1, 1600  , format[6] )

sheet.setValue( 8, 1, "=SUM(A1:A7)", format[7] )
sheet.setCol( 1,1,20 )

book.save()
book.release()

 二、写入各种类型的数据

import godking.libxl;

//新建文件
var book = godking.libxl.new("d:\example.xls");
var sheet = book.sheet();

//按照指定的单元格格式写入数据
sheet.setCellStr(1,	1,	"我是字符串1");
sheet.setCellNum(2,	1,	3.14);
sheet.setCellDate(3,1,	"2022-11-17");
sheet.setCellBool(4,1,	true);
sheet.setCellBlank(5,1);

//自动识别单元格格式写入数据,支持文本、数值、日期、逻辑、公式、空
sheet.setValue(1,2,	"我是字符串2");
sheet.setValue(2,2,	3.1415926);
sheet.setValue(3,2,	..time("2022-12-18"));
sheet.setValue(4,2,	false);
sheet.setValue(5,2);

//批量获取、设置单元格内容(批量复制内容,不带格式)
var t = sheet.getValues(1,1,5,2);  // 复制(1,1)到(5,2)范围内的所有内容
sheet.setValues(1,3,t); // 粘贴到 (1,3) 单元格,向右、下一直填充到(5,4)单元格

//测试清空单元格内容
sheet.setValue(1,3); //清空(1,3)单元格内容

//设置列宽
sheet.setCol(1,4,12); //设置第1列到第4列的列宽为12

//批量设置单元格内容
sheet.setTable(1,5,{
 		colCount = 2; // 避免第一行的null值影响获取列数
		{"姓名",null}
		{"年龄",18}
		{null,`=(F2+1)&"虚岁"`}
		{..time("2022-10-1"),"国庆节"}
		{"婚否",false}
	});

//保存文件
book.save()
book.release()

 三、设置单元格字体、格式

import godking.libxl;

var book = godking.libxl.new("d:\format.xls","格式演示")
var sheet = book.sheet();

var font = book.addFont()
font.config = {
	name = "宋体",
	size = 18,
	italic = false,
	strikeOut = false,
	color = 51,
	bold = false,
	script = false,
	underline = false,
}

var format = book.addFormat()
format.config = {
    alignH = 2;
    border = 12;
    borderColor = 2;
    font = font;
	fillPattern=1,
	patternForegroundColor=30,
	patternBackgroundColor=30,
}

sheet.setValue( 2, 1, "格式演示Format", format )
sheet.setCol( 1, 1, 25 ) 

book.save( )
book.release()

 四、填写收据

import godking.libxl;

var book = godking.libxl.new("d:\invoice.xls","发票例程" );
var sheet = book.sheet()

var boldFont = book.addFont({bold = true});

var titleFont = book.addFont({name = "黑体",size = 16});

var titleFormat = book.addFormat({font = titleFont,alignH = 2});

var headerFormat = book.addFormat({ alignH = 2/*_ALIGNH_CENTER*/,
									border = 1/*_BORDERSTYLE_THIN*/,
									font = boldFont;
									fillPattern = 1 /*_FILLPATTERN_SOLID*/,
									patternForegroundColor = 47 /*COLOR_TAN*/
									});

var descriptionFormat = book.addFormat({borderLeft = 1 /*BORDERSTYLE_THIN*/});

var amountFormat = book.addFormat({	numFormat = 5,
									borderLeft = 1,
									borderRight = 1
									});

var totalLabelFormat = book.addFormat({	borderTop = 1,
										alignH = 3,
										font = boldFont
										});
										
var totalFormat = book.addFormat({	numFormat = 5,
									border = 1,
									font = boldFont,
									fillPattern = 1,
									patternForegroundColor = 13});

var signatureFormat = book.addFormat({	alignH = 2,
										borderTop = 10});

sheet.setMerge(2,1,2,2)
sheet.setValue(2, 1, "收款收据", titleFormat)

sheet.setValue(4, 1, "姓名: 张三")
sheet.setValue(5, 1, "地址: 中国山东")
sheet.setValue(6, 1, "开票时间:"++..tostring(..time()))

sheet.setValue(7, 1, "品名", headerFormat)
sheet.setValue(7, 2, "数量", headerFormat)

sheet.setValue( 8, 1, "铅笔", descriptionFormat);
sheet.setValue(8, 2, 85, amountFormat);
sheet.setValue( 9, 1, "衬衫", descriptionFormat);
sheet.setValue(9, 2, 150, amountFormat);
sheet.setValue( 10, 1, "茶杯", descriptionFormat);
sheet.setValue(10, 2, 45, amountFormat);

sheet.setValue( 11, 1, "合计:", totalLabelFormat);
sheet.setValue(11, 2, "=SUM(B8:B10)", totalLabelFormat);

sheet.setValue(14, 2, "签名", signatureFormat);

sheet.setCol( 1, 1, 40, null, 0);
sheet.setCol(2, 2, 15, , 0);

book.save()
book.release()

五、与sql查询数据无缝衔接:

import console; 
import sqlServer
var s = sqlServer( 
	["Data Source"] = "192.168.1.18,1433";
	["Database"] = "fang";
	["User ID"] = "fangs";
	["Password"] = "fangs1234"; 
)
var t = s.getTable("select * from fangs")

import godking.libxl
var book = godking.libxl.new(".xls","Sheet1")
var sheet = book.sheet()
sheet.setTable(1,1,t.fields); //填充表头
// 或 sheet.setRowValue(1,1,t.fields);  //填充表头
sheet.setTable(2,1,t); //填充数据
book.save("d:\t.xls")

console.pause(true);

六、筛选、排序

 

//筛选器例程
import godking.libxl;
// 注意:xls格式不支持筛选功能
var book = godking.libxl.new("d:\filter.xlsx","筛选器例程")
var sheet = book.sheet();

    sheet.setValue(2, 1,"国家");
    sheet.setValue(2, 2,"交通死亡率");
    sheet.setValue(2, 3,"吸烟死亡率");
    sheet.setValue(2, 4,"自杀死亡率");

    sheet.setValue(3, 1,"USA");   	  sheet.setValue(4, 1,"Greenland"); 
    sheet.setValue(3, 2, 64);         sheet.setValue(4, 2, 94);
    sheet.setValue(3, 3, 69);         sheet.setValue(4, 3, 55);
    sheet.setValue(3, 4, 49);         sheet.setValue(4, 4, 64);

    sheet.setValue(5, 1,"Germany");   sheet.setValue(6, 1,"Switzerland");
    sheet.setValue(5, 2, 88);         sheet.setValue(6, 2, 93); 
    sheet.setValue(5, 3, 46);         sheet.setValue(6, 3, 54);
    sheet.setValue(5, 4, 55);         sheet.setValue(6, 4, 50);

    sheet.setValue(7, 1,"Spain");     sheet.setValue(8, 1,"Gobon"); 
    sheet.setValue(7, 2, 86);         sheet.setValue(8, 2, 75); 
    sheet.setValue(7, 3, 47);         sheet.setValue(8, 3, 52);
    sheet.setValue(7, 4, 69);         sheet.setValue(8, 4, 71);

    sheet.setValue(9, 1,"Greece");    sheet.setValue(10, 1,"Japan");
    sheet.setValue(9, 2, 67);         sheet.setValue(10, 2, 91);
    sheet.setValue(9, 3, 23);         sheet.setValue(10, 3, 57);
    sheet.setValue(9, 4, 87);         sheet.setValue(10, 4, 36);

var filter = sheet.filter()

// G开头的国家(注意:col1和col2不能同时生效,比较遗憾)
var col1 = filter.filterColumn(1)
col1.addFilter("G*")

//交通死亡率>50且<90(注意:col1和col2不能同时生效,比较遗憾)
//此处设置了col2后,col1的设置将失效。只有最后一次filterColumn设置才有效。
var col2 = filter.filterColumn(2)
col2.setCustomFilter(">",50,"<",90,"and")

filter.setSort(2,true) // 按第2列逆序排序
filter.apply() // 应用筛选和排序设置

book.save()
book.release()

import win ; win.delay(500) ;
import process
process.execute("d:\filter.xlsx")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/112051.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于docker部署nexus并创建发布npm包

1. nenus部署 1.1 搜索镜像 [rootsurpass ~]# docker search nexus INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED docker.io docker.io/sonatype/nexus3 …

移动 IP(计算机网络-网络层)

目录 移动性对网络应用的影响 移动IP中数据报的转发过程 移动IP中数据报的转发过程 三角路由的低效性 解决三角路由的低效性 移动IP的标准 移动性对网络应用的影响 现在先考虑这样一种情况&#xff0c;一个用户拿着无线移动设备在一个Wi-Fi服务区内走动&#xff0c;并且边…

【Django】第一课 基于Django超市订单管理系统开发

概念 django服务器开发框架是一款基于Python编程语言用于web服务器开发的框架&#xff0c;采用的是MTV架构模式进行分层架构。 项目搭建 打开pycharm开发软件&#xff0c;打开开发软件的内置dos窗口操作命令行 在这里指定项目存放的磁盘路径&#xff0c;并使用创建django项…

UDP通信

目录 一.预备知识 1.1IP与MAC 1.2端口号 1.3TCP与UDP协议 2.4网络字节序 二.socket编程接口 2.1socket常见API 2.2sockaddr结构 3.UDP网络程序 3.1服务端 3.1.1服务端创建套接字 3.1.2绑定服务端 3.1.3recvfrom 3.2客户端 3.2.1客户端创建套接字 3.2.2客户端绑…

目标检测之Faster RCNN分析

基本流程 图像输入网络得到特征图使用RPN生成候选框&#xff0c;将候选框投影到特征图获得特征矩阵对特征矩阵使用ROI pooling得到特征图并展平&#xff0c;得到预测结果 重点解析 RPN在网络中的位置 在上图中&#xff0c;从feature map层来看&#xff0c;有两个指向上层的箭头…

善用数据框,让你的工作更严谨统一,让你的地图更优雅、更专业

前言:数据框,一个经常被忽略的东西,只有偶尔才被想起。善用数据框能更好的管理我们的投影,更能轻松的控制图层的范围,甚至利用裁剪数据框更能让我们的地图好看...什么是数据框 好吧,这个很基础,但是我还是要提一下,可能有的读者确实不知道,毕竟它的中文译名就很奇怪。…

get/post/put/delete请求头说明

目录 1.请求头说明 2.get 3.delete 4.post 5.put 6. 说明 7.Content-Type说明 1.请求头说明 前端发出的请求通过浏览器进行查看&#xff0c;可以发现分为四个部分。常规信息(General)&#xff0c;请求头信息(Request Headers)&#xff0c;响应头信息(Response Headers)…

[思维模式-12]:《如何系统思考》-8- 工具篇 - 因果回路图/系统循环图/系统控制图,系统思考的关键工具

目录 第1章 因果回路图概述 1.1 什么是因果回路图 1.2 反馈回路 第2章 因果图的组成 2.1 回路 2.2 变量 2.4 连接 > 不同变量之间的函数关系 2.5 增强回路 2.6 调节回路 2.7 时间延时 第3章 因果图的用途与应用 3.1 因果图的价值 3.2 因果图的用途 第4章 因果图…

分布式微服务技术栈-SpringCloud+RabbitMQ+Docker+Redis

微服务技术栈一、微服务 介绍了解1 架构结构案例与 springboot 兼容关系拆分案例拆分远程调用2 eureka注册中心3 Ribbon 负载均衡4 nacos 阿里注册中心一、微服务 介绍了解 分布式架构的一种 把服务进行 拆分 springcloud 解决了 服务拆分过程中的 治理问题 与单体应用 进行区…

云服务器ECS入门

云服务器ECS入门 一、什么是云服务器ECS 云服务器ECS (Elastic Compute Service) 是阿里云提供的性能卓越、稳定可靠、弹性扩展的laaS(Infrastructure as a Service) 级别云计算服务 云服务器ECS免去了您采购IT硬件的前期准备&#xff0c;让您像使用水、电、天然气等公共资源…

Linux 下 使用点阵在LCD上显示汉字,字符

文章目录前言一、显示字符1.获取点阵&#xff1a;2.描点&#xff08;显示字符函数&#xff09;&#xff1a;3. 要打开LCD设备&#xff1a;4. 通过ioctl 获取Framebuffer参数:5. 通过mmap映射出Framebuffer的地址&#xff1a;6.清屏并显示字符&#xff1a;二、显示汉字1.区位码&…

WSL2的安装、应用

WSL2的安装、应用WSL安装、升级常用命令WSL导入导出其他 - 图形界面、虚拟化WSL安装、升级 win10系统上开启WSL参考如下&#xff0c;我先是安装了WSL1&#xff0c;之后又升级到WSL2的。关键是一些Win10上电配置&#xff0c;之后在windows应用商店下载ubuntu即可。 win10上lin…

又一家中国企业加入RISC-V,中国力推之下必将打破ARM的垄断

近日消息指腾讯已正式加入RISC-V&#xff0c;并且是以高级别的高级会员加入&#xff0c;显示出腾讯开发RISC-V架构芯片的决心&#xff0c;这显示出中国芯片行业正齐心协力发展RISC-V架构&#xff0c;将打破ARM的垄断。腾讯在芯片行业已取得一定的成绩&#xff0c;分别推出了AI推…

文字对称中的数学与魔术(二)——英文字母到单词的对称性

早点关注我&#xff0c;精彩不错过&#xff01;在上一篇文章中&#xff0c;我们引入了语言文字对称性这个领域&#xff0c;重点介绍了阿拉伯数字的对称性&#xff0c;相关内容请戳&#xff1a;文字对称中的数学与魔术&#xff08;一&#xff09;——阿拉伯数字的对称性今天我们…

Linux系统基础——内存管理

Linux系统内存管理 特此说明: 刘超的趣谈linux操作系统是比较重要的参考资料&#xff0c;本文大部分内容和所有图片来源于这个专栏。 1 物理内存 物理内存根据 NUMA 架构分节点。每个节点里面再分区域。每个区域里面再分页。 物理内存页通过伙伴系统进行分配。进程通过虚拟地址…

xv6 源码调试环境搭建

一、资源 官网&#xff1a;https://pdos.csail.mit.edu/6.828/2022/ 二、搭建 xv6 调试环境 1、下载 xv6 源码 git clone git://github.com/mit-pdos/xv6-riscv.git2、安装工具链 特别说明&#xff1a;ubuntu 仓库中已经提供&#xff0c;可直接安装。 1、从 ubuntu 仓库中…

前端小知识:文本分句、词、字(Intl.Segmenter)

5. 文本分字、词、句 参考文章&#xff1a; https://mp.weixin.qq.com/s/MLmi-Yoi9sez8-5DPtcBVw   官方文档&#xff08;构造参数&#xff09;&#xff1a; https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl/Segmenter/Segmenter   …

Redis系列:深刻理解高性能Redis的本质

1 背景 分布式系统绕不开的核心之一就是数据缓存&#xff0c;有了缓存的支撑&#xff0c;系统的整体吞吐量会有很大的提升。通过使用缓存&#xff0c;我们把频繁查询的数据由磁盘调度到缓存中&#xff0c;保证数据的高效率读写。 当然&#xff0c;除了在内存内运行还远远不够&…

Linux系统基础——BIOS和Bootloader

BIOS和Bootloader 特此说明: 刘超的趣谈linux操作系统是比较重要的参考资料&#xff0c;本文大部分内容和所有图片来源于这个专栏。 1 了解背景 1.1 目的 操作系统不是在板子上电就直接运行的&#xff0c;上电到系统启动的中间过程要搞明白&#xff0c;比如了解linux系统启动…

12月24日:数据结构

Btree结构 ​​​​​​ BTree和BTree详解_菜鸟笔记的博客-CSDN博客_btree 简单的说一下什么是聚簇索引 , 和非聚簇索引有啥区别 聚簇索引&#xff1a;索引和数据存储放在了同一个文件中&#xff0c;找到了索引也就能找到数据 非聚簇索引&#xff1a;将数据存储和索引分开放置…