zoukankan      html  css  js  c++  java
  • lua的table转为excel表格的方法

      项目中需要用到转表工具,由于没有直接的转表工具,而且嵌套的table(table里面嵌套了多层表格与数组)。无奈之下,只好采用折衷的方法,先将table表格转为json数据,再用在线转表工具将json转为excel表格。

      第一步,下载lua解释器,关于解释器的链接我会放到后文。然后编写lua脚本,主要代码如下(这里引用了http://haiyi.iteye.com/blog/480185的方法,处理table中信息的方法可以自己写)。然后写了个存储为txt的脚本,具体方法如下(参考https://blog.csdn.net/forestsenlin/article/details/50776417):

    function table2json(t)--将表格转换为json
        local function serialize(tbl)
            local tmp = {}
            for k, v in pairs(tbl) do
                local k_type = type(k)
                local v_type = type(v)
                local key = (k_type == "string" and """ .. k .. "":")
                        or (k_type == "number" and "")
                local value = (v_type == "table" and serialize(v))
                        or (v_type == "boolean" and tostring(v))
                        or (v_type == "string" and """ .. v .. """)
                        or (v_type == "number" and v)
                tmp[#tmp + 1] = key and value and tostring(key) .. tostring(value) or nil
            end
            if table.maxn(tbl) == 0 then --这句话已经过时,但是删除的话会导致后期需要手动修改一下
            return "{" .. table.concat(tmp, ",") .. "}"
            else                           
            return "[" .. table.concat(tmp, ",") .. "]"
            end
        end
        assert(type(t) == "table")
        return serialize(t)
    end
    function appendFile(fileName,content)
        local f = assert(io.open(fileName,'a'))
        f:write(content)
        f:close()
    end
    appendFile('poor_reward.txt',table2json(poor_reward))--poor_reward是自定义的表

       这是两个核心的代码,具体操作可以自己处理,最后在最外层调用即可。这里有个麻烦的事情就是调用lua解释器,我是用cmd的方法调用:

      第一步:win+r打开cmd命令,先写入盘,然后打开目录:

      第二步:点击dir查看文件扩展名之类的信息,这个并不一定。

      第三步:写入解释器与运行文件名,点击运行。以后想再次调用的时候,直接点击方向键的上键就可以了。这里是运行文件(cmd命令不识别中文,所以下面是乱码。大致逻辑就是将文件显示出来,然后保存到本地):

     

      然后最好用在线json解析工具解析一下,查看json格式是否正确。最后用在线json转excel转一下,这个是在线解析工具:http://j2e.kpoda.com/。

  • 相关阅读:
    Math 类、Random 类、BigDecimal 类
    Redis 持久化原理及过期 key 清除策略
    MySql 存储引擎和索引
    MySql 视图、触发器以及存储过程
    布隆过滤器
    微信红包实现原理
    11-散列3 QQ帐户的申请与登陆 (25 分)
    11-散列2 Hashing (25 分)
    11-散列1 电话聊天狂人 (25 分)
    C语言实现Linux之ls
  • 原文地址:https://www.cnblogs.com/yangyadong66/p/9429523.html
Copyright © 2011-2022 走看看