aardio 读取 Excel文件,显示在 listview 中
编写 main.aardio 如下
import win.ui;
/*DSG{{*/
winform = win.form(text="excel1";right=801;bottom=500)
winform.add(
button1={cls="button";text="读取Excel文件";left=19;top=14;right=126;bottom=44;z=1};
button2={cls="button";text="导出Excel文件";left=168;top=17;right=291;bottom=45;z=3};
listview={cls="listview";left=2;top=62;right=801;bottom=498;edge=1;gridLines=1;hscroll=1;vscroll=1;z=2}
)
/*}}*/import io;
import sys;
import fsys.dlg;
import win.ui.grid;
win.ui.grid(winform.listview);import console;
import com.excel;console.showLoading(" 正在启动 Excel ");
var excel,err = com.excel();
assert(excel,err);excel.alerts = false; //关闭界面提示与屏幕更新
excel.Visible = false;// 读取Excel文件
winform.button1.oncommand = function(id,event){winform.button1.disabled = true;var xls = fsys.dlg.open("*.xls|*.xlsx");if (!io.exist(xls)){winform.msgbox(xls+" not exists.");winform.button1.disabled = false;return ;}winform.listview.clear();try{// 读取.xls 或 .xlsxvar book = excel.Open(xls); var sheet = book.Sheets(1);var rows = sheet.UsedRange.Rows.count;console.log("rows=",rows)var cols = sheet.UsedRange.Columns.Count;console.log("cols=",cols)var fields = {};for (j=1; cols; 1){v = sheet.Cells(1, j).value;if (type(v) == type.string) table.push(fields, v);elseif (type(v) == type.number){if (v == math.modf(v)) table.push(fields, string.format("%d",v));else table.push(fields, string.format("%.4f",v));} // date 字段格式化elseif (type(v) == type.table) table.push(fields, string.left(tostring(v),10));elseif (type(v) == type.null) table.push(fields, ''); else table.push(fields, type(v)); }//console.dump(fields);winform.listview.setColumns(fields);for (i=2; rows; 1){if (i >100) break;values = {};for (j=1; cols; 1){v = sheet.Cells(i, j).value;if (type(v) == type.string) table.push(values, v);elseif (type(v) == type.number){if (v == math.modf(v)) table.push(values, string.format("%d",v));else table.push(values, string.format("%.4f",v));} // date 字段格式化elseif (type(v) == type.table) table.push(values, string.left(tostring(v),10));elseif (type(v) == type.null) table.push(values, '');else table.push(values, type(v));}//console.dump(values);winform.listview.addItem(values);} book.close();}catch(e){winform.msgbox(e)} winform.button1.disabled = false;
}// 鼠标左键点击事件
winform.listview.onClick = function(item,subItem,nmListView){//var index = winform.listview.selIndex; //选择的行
}
// 鼠标双击修改事件
winform.listview.onEditChanged = function(text,iItem,iSubItem){winform.msgbox(string.join({iItem,iSubItem,text},",")); //修改成功
}
// 鼠标右键事件
winform.listview.onRightClick = function(item,subItem,nmListView){var v = winform.listview.getItemText(item,subItem); //取值winform.msgbox(string.join({item,subItem,v},",")); //显示行、列、值信息
}// 导出Excel文件
winform.button2.oncommand = function(id,event){}winform.show();
return win.loopMessage();
excel.Quit();
参考:aardio开发语言Excel数据表读取修改保存实例练习
import godking.libxl; 在 蓝奏云 下载 libxl.rar 密码:123
解压缩将文件放于:aardio\lib\godking\ ,先要 cd lib; mkdir godking
相关文章:
aardio 读取 Excel文件,显示在 listview 中
编写 main.aardio 如下 import win.ui; /*DSG{{*/ winform win.form(text"excel1";right801;bottom500) winform.add( button1{cls"button";text"读取Excel文件";left19;top14;right126;bottom44;z1}; button2{cls"button";text&quo…...

Web:前端常用的几种Http请求GET和POST样例
1、简述 在Web开发过程中,少不了发起Http请求服务端的接口数据,在不同的框架中使用了不同的Http请求方式,常用的请求有fetch、 ajax、 axios、XMLHttpRequest、request,以下样例仅供参考。 2、Fetch Fetch API 是一种 JavaScr…...
clickonce 发布的winform 如何CA认证?
要为使用ClickOnce发布的WinForms应用程序启用CA(证书颁发机构)认证,您可以按照以下步骤进行操作: 1. **获取数字证书**: - 首先,您需要获得一个数字证书,通常从受信任的CA购买。这个数字证…...
#力扣:13. 罗马数字转整数@FDDLC
13. 罗马数字转整数 一、Java import java.util.HashMap;class Solution {public int romanToInt(String s) {HashMap<Character, Integer> m new HashMap<>() {{put(I, 1);put(V, 5);put(X, 10);put(L, 50);put(C, 100);put(D, 500);put(M, 1000);}};char[] a …...

React18入门(第一篇)——JSX、TSX语法详解
文章目录 一、JSX 语法简介二、和 HTML 标签的几点不同三、JSX 属性四、JSX 事件4.1 简单点击事件4.2 类型限制4.3 带参数,箭头函数 五、插入 JS 变量六、JSX 中使用条件判断七、循环 一、JSX 语法简介 JSX - 是 JS 的扩展,写在 JS 代码里面,…...

【计算机基础知识】字符的编码表示
欢迎来到我的:世界 希望作者的文章对你有所帮助,有不足的地方还请指正,大家一起学习交流 ! 目录 前言1.西文字符编码2.中文字符编码汉字输入码汉字国标码汉字机内码汉字字形码 总结 前言 计算机处理的数据中,除了数值型数据以外…...
【面试题精讲】Java字符型常量和字符串常量的区别?
“ 有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top ” 首发博客地址[1] 面试题手册[2] 系列文章地址[3] Java 中的字符型常量和字符串常量是两种不同的数据类型。 字符型常量:字符型常量…...

【Vue面试题六】为什么Vue中的 v-if 和 v-for 不建议一起用?
文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:v-if和v-for的优先级是什…...

leetCode 674. 最长连续递增序列 动态规划 / 贪心策略
674. 最长连续递增序列 - 力扣(LeetCode) 给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。 连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每…...

数据中台实战(11)-数据中台的数据安全解决方案
0 微盟删库跑路 除了快、准和省,数据中台须安全,避免“微盟删库跑路”。 2020年2月23日19点,国内最大精准营销服务商微盟出现大面积系统故障,旗下300万商户线上业务全停,商铺后台所有数据被清。始作俑者是一位运维&a…...

林沛满-TCP之在途字节数
本文整理自:《Wireshark网络分析的艺术 第1版》 作者:林沛满 著 出版时间:2016-02 我一直谨记斯蒂芬霍金的金玉良言—每写一道数学公式就会失去一半读者。不过为了深度分析网络包,有时候是不得不计算的,好在小学一年级…...

HTTPS 加密工作过程
引言 HTTP 协议内容都是按照文本的方式明文传输的,这就导致在传输过程中出现一些被篡改的情况。例如臭名昭著的运营商劫持。显然, 明文传输是比较危险的事情,为此引入 HTTPS ,HTTPS 就是在 HTTP 的基础上进行了加密, 进一步的来保…...

校招秋招,性格和职业有关系吗?
企业在招聘应届毕业生时不再局限于普通的面试或者笔试,在互联网时代,为了能够更好的匹配需要的优质人才,企业会通过各种测试来提高招聘的准确率以及成功率。也许以前很多人都听说过性格和职业是有一定关系的,但是如何确定自己的性…...

网络和系统操作命令
目录 ping:用于检测网络是否通畅,以及网络时延情况。ipconfig:查看计算机的IP参数配置信息,如IP地址、默认网关、子网掩码等信息。netstat:显示协议统计信息和当前TCP/IP网络连接。tasklist:显示当前运行的…...
刷穿力扣(1~30)
更好的阅读体验 \huge{\color{red}{更好的阅读体验}} 更好的阅读体验 1. 两数之和 哈希表遍历数组,同时用 HashMap 维护已出现过的数及其下标若当前的数 nums[i] 满足 target - nums[i] 曾经出现过,则直接返回否则将其加入到哈希表中。 class Solution …...
栈和队列的基本操作
(一)实验类型:设计性 (二)实验目的: 1.掌握栈和队列的抽象数据类型。 2.掌握实现栈和队列的各种操作的算法。 3.理解栈与递归的关系。 4. 掌握队列的链式存贮结构及基…...
变压器绕组断股往往导致直流电阻不平衡率超标
变压器绕组断股往往导致直流电阻不平衡率超标, 例如, 某电厂 SFPSL—12000/220 型主变压器, 色谱分析结果发现总烃含量急剧增长, 测直流电阻, 其结果是高、 低压侧与制造厂及历年的数值相比较无异常, 但中压…...

stack和queque
1.stack 1.1定义 T 是容器内的数据类型; Container是数据类型的容器适配器 vector和list和stack的区别 1.2 stack的功能 注意这里没有迭代器;原因stack是先进后出的规律;这就规定该容器不可以随机访问; 2. queue...

信息学 学习/复习 抽签器(附源码)
问你一个问题,你考试前怎么复习呀? 效果图 以下是源代码,可自行修改 [C] #include<bits/stdc.h> #include<windows.h> using namespace std; vector<string>item; int main(void) {item.push_back("Manacher"…...

基于LADRC自抗扰控制的VSG三相逆变器预同步并网控制策略(Simulink仿真实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...

Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...

cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...

【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...