• aardio 读取 Excel文件,并显示在 listview


    编写 main.aardio 如下

    1. import win.ui;
    2. /*DSG{{*/
    3. winform = win.form(text="excel1";right=801;bottom=500)
    4. winform.add(
    5. button1={cls="button";text="读取Excel文件";left=19;top=14;right=126;bottom=44;z=1};
    6. button2={cls="button";text="导出Excel文件";left=168;top=17;right=291;bottom=45;z=3};
    7. listview={cls="listview";left=2;top=62;right=801;bottom=498;edge=1;gridLines=1;hscroll=1;vscroll=1;z=2}
    8. )
    9. /*}}*/
    10. import io;
    11. import sys;
    12. import fsys.dlg;
    13. import win.ui.grid;
    14. win.ui.grid(winform.listview);
    15. import console;
    16. import com.excel;
    17. console.showLoading(" 正在启动 Excel ");
    18. var excel,err = com.excel();
    19. assert(excel,err);
    20. excel.alerts = false; //关闭界面提示与屏幕更新
    21. excel.Visible = false;
    22. // 读取Excel文件
    23. winform.button1.oncommand = function(id,event){
    24. winform.button1.disabled = true;
    25. var xls = fsys.dlg.open("*.xls|*.xlsx");
    26. if (!io.exist(xls)){
    27. winform.msgbox(".xls not found.");
    28. winform.button1.disabled = false;
    29. return ;
    30. }
    31. winform.listview.clear();
    32. try{
    33. // 读取.xls 或 .xlsx
    34. var book = excel.Open(xls);
    35. var sheet = book.Sheets(1);
    36. var rows = sheet.UsedRange.Rows.count;
    37. console.log("rows=",rows)
    38. var cols = sheet.UsedRange.Columns.Count;
    39. console.log("cols=",cols)
    40. var fields = {};
    41. for (j=1; cols; 1){
    42. v = sheet.Cells(1, j).value;
    43. if (type(v) == type.string) table.push(fields, v);
    44. elseif (type(v) == type.number){
    45. if (v == math.modf(v)) table.push(fields, string.format("%d",v));
    46. else table.push(fields, string.format("%.4f",v));
    47. } // date 字段格式化
    48. elseif (type(v) == type.table) table.push(fields, string.left(tostring(v),10));
    49. elseif (type(v) == type.null) table.push(fields, '');
    50. else table.push(fields, type(v));
    51. }
    52. //console.dump(fields);
    53. winform.listview.setColumns(fields);
    54. for (i=2; rows; 1){
    55. if (i >100) break;
    56. values = {};
    57. for (j=1; cols; 1){
    58. v = sheet.Cells(i, j).value;
    59. if (type(v) == type.string) table.push(values, v);
    60. elseif (type(v) == type.number){
    61. if (v == math.modf(v)) table.push(values, string.format("%d",v));
    62. else table.push(values, string.format("%.4f",v));
    63. } // date 字段格式化
    64. elseif (type(v) == type.table) table.push(values, string.left(tostring(v),10));
    65. elseif (type(v) == type.null) table.push(values, '');
    66. else table.push(values, type(v));
    67. }
    68. //console.dump(values);
    69. winform.listview.addItem(values);
    70. }
    71. book.close();
    72. }
    73. catch(e){
    74. winform.msgbox(e)
    75. }
    76. winform.button1.disabled = false;
    77. }
    78. // 鼠标左键点击事件
    79. winform.listview.onClick = function(item,subItem,nmListView){
    80. //var index = winform.listview.selIndex; //选择的行
    81. }
    82. // 鼠标双击修改事件
    83. winform.listview.onEditChanged = function(text,iItem,iSubItem){
    84. winform.msgbox(string.join({iItem,iSubItem,text},",")); //修改成功
    85. }
    86. // 鼠标右键事件
    87. winform.listview.onRightClick = function(item,subItem,nmListView){
    88. var v = winform.listview.getItemText(item,subItem); //取值
    89. winform.msgbox(string.join({item,subItem,v},",")); //显示行、列、值信息
    90. }
    91. // 导出Excel文件
    92. winform.button2.oncommand = function(id,event){
    93. }
    94. winform.show();
    95. return win.loopMessage();
    96. excel.Quit();

    参考:aardio开发语言Excel数据表读取修改保存实例练习

    import godking.libxl; 在 蓝奏云 下载 libxl.rar 密码:123

    解压缩将文件放于:aardio\lib\godking\ ,先要 cd lib; mkdir godking

  • 相关阅读:
    R语言进行数据分组聚合统计变换(Aggregating transforms)、计算dataframe数据的分组独特值的个数(distinct)
    leetcode:21. 合并两个有序链表
    渗透测试面试中常见的问题收集(部分)
    pandas 的基本使用
    centos7创建ramdisk
    探索 ArrayList 原理 - 第二节 ArrayList 继承体系源码分析
    初识OpenGL (4)链接着色器
    Debian11系统简单配置
    【CTF机器人】文件头字节查询(Nonebot2+CQHTTP)
    flink本地IDEA测试checkpoint
  • 原文地址:https://blog.csdn.net/belldeep/article/details/133470002