aardio 读取 Excel文件,显示在 listview 中

news/2024/7/21 4:51:31 标签: 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 或 .xlsx
		var 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


http://www.niftyadmin.cn/n/5068672.html

相关文章

【数据库——MySQL】(14)过程式对象程序设计——游标、触发器

目录 1. 游标1.1 声明游标1.2 打开游标1.3 读取游标1.4 关闭游标1.5 游标示例 2. 触发器2.1 创建触发器2.2 修改触发器2.3 删除触发器2.4 触发器类型2.5 触发器示例 参考书籍 1. 游标 游标一般和存储过程一起配合使用。 1.1 声明游标 要使用游标,需要用到 DECLAR…

运动控制:分辨率、定位精度、重复定位精度

分辨率,定位精度,重复定位精度三者之间有什么关系? 对于这个问题,我相信,很多刚开始做设计的伙伴们,都有这样的疑问。 今天,不墨迹,直接讲问题。 先说分辨率,这个最容…

JS加密工具汇总 你要找的都在这

CryptoJS 开源地址:https://github.com/brix/crypto-js优点:支持多种加密算法,易于使用。缺点:有一定的性能开销。 sjcl (Stanford JavaScript Crypto Library) 开源地址:https://github.com/bitwiseshiftleft/sjcl优…

PLL锁相环倍频原理

晶振8MHz,但是处理器输入可以达到72MHz,是因为PLL锁相环提供了72MHz。 锁相环由PD(鉴相器)、LP(滤波器)、VCO(压控振荡器)组成。 处理器获得的72MHz并非晶振提供,而是锁…

CleanMyMac X4.14.1最新版本下载

CleanMyMac X是一个功能强大的Mac清理软件,它的设计理念是提供多个模块,包括垃圾清理、安全保护、速度优化、应用程序管理和文档管理粉碎等,以满足用户的不同需求。软件的界面简洁直观,让用户能够轻松进行日常的清理操作。 使用C…

W25Q128芯片手册精读

文章目录 前言1. 概述2. 特性3. 封装类型和引脚配置3.1 8焊盘WSON 8x6 mm3.2其他封装 4. 引脚描述4.1 片选4.2 串行数据输入输出4.3 写保护4.4 保持脚4.5 时钟 5. 块图6. 功能描述6.1 SPI功能6.1.1 标准SPI6.1.2 双通道SPI6.1.3 四通道SPI6.1.4 保持功能 6.2 写保护6.2.1 写保护…

Django 模型层的操作(Django-05 )

一 模型层的解读 Django中内嵌了ORM框架,不需要直接编写SQL语句进行数据库操作,而是通过定义模型类,操作模型类来完成对数据库中表的增删改查和创建等操作。 O 是object,也就类对象的意思。R 是relation,翻译成中文是…