python读取表格生成对应文件

# coding=utf-8
import os
import sys
import xlrd
import codecs
import collections
import json
import io

# 
def genLangJson (fileName, nameIdx, idx):
    data = xlrd.open_workbook(fileName)
    table = data.sheets()[0]
    rowNum = table.nrows                  # 行数
    colNum = table.ncols                  # 列数

    if colNum <= idx:
        return False
    
    lang = ''                                       #语言代号 从第0行读取
    data = {}
    for lineIdx in range(rowNum):
        name  = table.cell(lineIdx,nameIdx).value   #第N行 的 key 值
        value = table.cell(lineIdx,idx).value       #第N行 的 对应翻译 
        if not name.strip():
            # 跳过没有对应token字体的文本
            continue

        if not value.strip():
            # 文本缺失
            print("For " + lang + "in line " + str(lineIdx+1) + "miss")
            continue

        if lineIdx == 0:
            # 首行
            lang = value                     # 语言代号en_us es_es
        else:
            # print("%s" % (value) )
            data[name] = value

    lang = lang#.encode("utf-8")
    print("lang:%s" % lang)

    # 文件结束,写文件
    curPath  = os.path.dirname(os.path.abspath(__file__))
    jsonPath = os.path.join(curPath, "res", "lang1", lang, "text.txt")
    # jsonPath = curPath + "\\" + lang + "\\text.txt"
    
    # 生成文件夹
    dirname = os.path.dirname(jsonPath)
    if not os.path.exists(dirname):
        os.makedirs(dirname)

    with io.open(jsonPath, 'w', encoding='utf-8') as f:
        f.write(json.dumps(data, ensure_ascii=False, indent=4, sort_keys=True))

    return True

# 生成json翻译文本
def makeJsonFile(fileName, tokenIdx, startIdx):
    idx = startIdx
    while (1):
        bret = genLangJson(fileName, tokenIdx, idx)      # 从左往右,一列列读取
        if (bret == False):
            break
        idx += 1

if __name__ == '__main__':

    # 自动查找excel文档- 
    curPath = os.path.dirname(os.path.abspath(__file__))
    xlsFile = curPath + '\\lang.xlsx'

    print("xlsx file:%s" % xlsFile)

    # 各列位置(从0开始)
    tokenIdx = 0  # Token所在的列   key 值
    startIdx = 1  # 正式语言列
    # fntIdx = 3    # 字体列ttf_xx

    makeJsonFile(xlsFile, tokenIdx, startIdx)


你可能感兴趣的:(python读取表格生成对应文件)