异步,永不止步

使用 xlrd 模块实现对excel 的读取、excel转json 、excel 转 mysql insert 语句

#-*- coding:utf-8 -*-
# 处理 excel 中的 area 为 Mysql insert 语句
import xlrd, json, codecs, os

# data = xlrd.open_workbook('101.xls')
data = xlrd.open_workbook('C:\Users\Administrator\Desktop\changanyiyuan.xlsx')
# table = data.sheets()[0]
table = data.sheet_by_index(0)

# try 
hospitalJson = codecs.open('C:\Users\Administrator\Desktop\changanyiyuan.json','a+','utf-8')
hospitalJson.truncate(0)
hospitalJson.write('[')    # 先写入数组头

hospitalJsonInsert = codecs.open('C:\Users\Administrator\Desktop\hospitalJsonInsert.json','a+','utf-8')
hospitalJsonInsert.truncate(0)
hospitalJsonInsert.write('insert into department(hospital_id, pid, name, rank, create_time, modify_time) values')

# 取出表格的第一行作为 json 的 key (javascript object notation)
attribute = table.row_values(0)

# 除第一行以外的数据放入一个 dict 
jsonAll = []

contents = {}
for index_r in range(1,table.nrows):
    for index_c in range(table.ncols):
        contents[attribute[index_c]] = table.cell(index_r, index_c).value   # cell 单元格的一个属性并非方法
        # print contents
    hospitalJson.write("%s,\n" %json.dumps(contents,ensure_ascii=False,sort_keys=True, indent=4))
    hospitalJsonInsert.write('(2265, -1, \'%s\' ,%d, now(), now()),'%(table.cell(index_r, 3).value, table.cell(index_r, 5).value))
    # jsonAll.append(json.dumps(contents,ensure_ascii=False,sort_keys=True, indent=4))

# print hospitalJson.tell()
# hospitalJson.seek(0)
# print hospitalJson.tell()

hospitalJson.seek(-2, os.SEEK_END)
hospitalJson.truncate()
hospitalJson.write(']')    # 数组结束

# hospitalJson.write(json.dumps(contents,ensure_ascii=False,sort_keys=True, indent=4))  # 少了 ensure_ascii=False 参数就不能写中文进文件?
hospitalJsonInsert.seek(-1, os.SEEK_END)
hospitalJsonInsert.truncate()
hospitalJsonInsert.write(';')

# hospitalJson.write("%s" % jsonAll)
hospitalJson.close()
hospitalJsonInsert.close()

# (`id`, `hospital_id`, `pid`, `name`, `rank`, `create_time`, `modify_time`)
# 写成 mysql 语句
# hospitalJsonInsert.write('( 2265, -1, \'%s\' ,%s, now(), now())'%(table.cell(index_r, 3), table.cell(index_r, 5)))

 

posted on 2015-07-15 23:48  gaopq  阅读(542)  评论(0编辑  收藏  举报

导航