YStudio Y++

Excel 按表头读写

Y++ / YStudio 开发文档 · 一点滴

第一行当字段名(「姓名」「手机」),下面按列号读写。不必记 A/B 列。表在工程根 data\名单.xlsx(相对路径)。行列从 1 起。

窗口需有:按钮读取、按钮写出、标签1。先准备好表头行。

Excel类 g_book

函数 找列 (文本 表头) 整数 {
    整数 列数 = g_book.取列数()
    整数 c
    循环 (列数, c) {
        如果 (g_book.取单元格(1, c + 1) == 表头) {
            返回 (c + 1)
        }
    }
    返回 (0)
}

函数 按钮读取.单击 (整数 X, 整数 Y) {
    如果 (g_book.打开("data\\名单.xlsx") == 假) {
        标签1.标题 = g_book.取错误()
        返回 ()
    }
    整数 姓名列 = 找列("姓名")
    整数 手机列 = 找列("手机")
    如果 (姓名列 == 0 || 手机列 == 0) {
        g_book.关闭()
        标签1.标题 = "第一行需要「姓名」和「手机」"
        返回 ()
    }
    整数 行数 = g_book.取行数()
    文本 摘要 = ""
    整数 i
    循环 (行数 - 1, i) {
        整数 行 = i + 2
        文本 名 = g_book.取单元格(行, 姓名列)
        文本 机 = g_book.取单元格(行, 手机列)
        如果 (名 != "") {
            摘要 = 摘要 + 名 + " " + 机 + " / "
        }
    }
    g_book.关闭()
    标签1.标题 = 摘要
}

函数 按钮写出.单击 (整数 X, 整数 Y) {
    如果 (g_book.打开("data\\名单.xlsx") == 假) {
        如果 (g_book.新建() == 假) {
            标签1.标题 = g_book.取错误()
            返回 ()
        }
        g_book.置单元格(1, 1, "姓名")
        g_book.置单元格(1, 2, "手机")
    }
    整数 姓名列 = 找列("姓名")
    整数 手机列 = 找列("手机")
    如果 (姓名列 == 0) {
        姓名列 = 1
        g_book.置单元格(1, 姓名列, "姓名")
    }
    如果 (手机列 == 0) {
        手机列 = 2
        g_book.置单元格(1, 手机列, "手机")
    }
    整数 行 = g_book.取行数() + 1
    如果 (行 < 2) {
        行 = 2
    }
    g_book.置单元格(行, 姓名列, "张三")
    g_book.置单元格(行, 手机列, "13800000000")
    如果 (g_book.保存("data\\名单.xlsx") == 假) {
        标签1.标题 = g_book.取错误()
        g_book.关闭()
        返回 ()
    }
    g_book.关闭()
    标签1.标题 = "已写入第 " + 到文本(行) + " 行"
}
错误 正确
当 0 起下标 取单元格(1, 1) 是 A1
打开 .xls 只支持 .xlsx
用列号写死业务 先扫第一行表头再读写

对照:excel.md