import xlrd
import xlwt
import os
import math
from datetime import date, datetime
def read_excel():
workbook = xlrd.open_workbook(r'./excel.xlsx')
print (workbook.sheet_names())
#sheet2_name = workbook.sheet_names()[1]
print("1111111111")
# 根据sheet索引或者名称获取sheet内容
sheet2 = workbook.sheet_by_index(1) # sheet索引从0开始
sheet2 = workbook.sheet_by_name('sheet2')
# sheet的名称,行数,列数
print (sheet2.name,sheet2.nrows,sheet2.ncols)
# 获取整行和整列的值(数组)
rows = sheet2.row_values(3) # 获取第四行内容
cols = sheet2.col_values(2) # 获取第三列内容
print (rows)
print (cols)
# 获取单元格内容
print (sheet2.cell(1,0).value.encode('utf-8'))
print (sheet2.cell_value(1,0).encode('utf-8'))
print (sheet2.row(1)[0].value.encode('utf-8'))
# 获取单元格内容的数据类型
print (sheet2.cell(1,0).ctype)
def read_excel2():
workbook = xlrd.open_workbook(r'./63限时活动.xlsx')
print (workbook.sheet_names())
#sheet2_name = workbook.sheet_names()[1]
print("1111111111")
# 根据sheet索引或者名称获取sheet内容
sheet2 = workbook.sheet_by_index(1) # sheet索引从0开始
print("LimitActivityControlTable start")
sheet2 = workbook.sheet_by_name('LimitActivityControlTable')
print("LimitActivityControlTable end")
print ("rows, colos",sheet2.name,sheet2.nrows,sheet2.ncols)
for i in range(sheet2.nrows):
for j in range(sheet2.ncols):
print(sheet2.cell(i,j).value)
print ("read end.......")
# sheet的名称,行数,列数
print (sheet2.name,sheet2.nrows,sheet2.ncols)
# 获取整行和整列的值(数组)
rows = sheet2.row_values(3) # 获取第四行内容
cols = sheet2.col_values(2) # 获取第三列内容
print (rows)
print (cols)
# 获取单元格内容
print (sheet2.cell(1,0).value.encode('utf-8'))
print (sheet2.cell_value(1,0).encode('utf-8'))
print (sheet2.row(1)[0].value.encode('utf-8'))
## int 数组检查
def int_array_check(str):
#alg: 不能有 , 以外的符号
pass
# 配置表类型,单元格的值, 单元格python的类型
def handle_cell_value(config_type, cell_value, cell_type):
ret_value_list = []
if config_type == "int":
#可能填的是 0000 这样的值,cell_type 是否是 string 类型
if cell_type != 2 or cell_value % 1 != 0:
raise ("")
pass
pass
elif config_type == "int[]":
pass
elif config_type == "string":
pass
else:
print ("error type")
pass
#读到数据结构中, 再输出,方便控制
def handle_one_file(sheet):
err_info_list = []
print("sheet name:", sheet.name)
lua_file_name = sheet.name + ".lua"
file = open(lua_file_name, 'w')
file.write("local " + sheet.name + " = {\n")
field_name_list = []
row0 = sheet.row_values(0)
for i in range(len(row0)):
field_name_list.append(row0[i])
field_type_list = []
rows2 = sheet.row_values(2)
for i in range(len(rows2)):
field_type_list.append(rows2[i])
config_list = []
for i in range(sheet.nrows):
if i < 5:
continue
ctype_id = sheet.cell(i,0).ctype
if ctype_id == 0:
print("id is null.")
continue
#file.write("i:"+str(i))
dict_line = {}
has_err = False
for j in range(len(sheet.row_values(i))):
#cell_value = sheet.cell_value(i,j)
cell_value = sheet.row(i)[j].value
cell_type = sheet.cell(i,j).ctype
if field_type_list[j] == "int":
print ("type:int")
if cell_type != 2 or cell_value % 1 != 0:
print("python get type:", cell_type, "cell_value:", cell_value)
errinfo = "i:" + str(i) + "\tj:" + str(j) + "\t 类型错误"
print(errinfo)
err_info_list.append(errinfo)
has_err = True
continue
cell_value = int(cell_value)
elif field_type_list[j] == "int[]": #int 数组类型
if cell_type != 2:
print("error")
int_array_check(cell_value)
elif field_type_list[j] == "string":
pass
else:
print("bad type")
dict_line[field_name_list[j]] = cell_value
if has_err == False:
config_list.append(dict_line)
##test for gets.
#file.write("sssssssss" +str(len(config_list)))
print("..............:", len(config_list))
for i in config_list:
#line = config_list[i]
for key in i:
info = "key:" + str(key) + "\tvalue:"+str(i[key]) +"\n"
file.write(info)
print("key:",key, "\t\t\t\tvalue:", i[key])
file.write("\n")
file.close()
#print("i:", i+1, config_list)
#os.mknod(lua_file_name)
def read_excel_file():
workbook = xlrd.open_workbook(r'./63限时活动.xlsx')
#print(workbook.sheet_names())
for i in range(len(workbook.sheet_names())):
print(i, workbook.sheet_names()[i])
sheet = workbook.sheet_by_name("ChristmasPartyTable")
handle_one_file(sheet)
if i == 0:
break
if __name__ == '__main__':
#read_excel()
str0 = 0000.0
if isinstance(str0, int):
print("is int")
else:
print ("not int")
#print(int(str0))
read_excel_file()
##read_excel2()
"""
2
['整形','175.0']
1
['字符串','最后的骑士']
2
['浮点型','6.23']
3
['日期','42909.6461574']
1 0
['空值','']
4
['布尔型','1']
"""
"""
first = True
for i in range(sheet.nrows):
if i < 5:
continue
ctype = sheet.cell(i,0).ctype
print("ctype:", ctype)
cell_value = sheet.cell_value(i, 0)
if ctype == 0: #非空值
continue
if first == False:
file.write(",\n")
else:
first = False
file.write("\t[" + str(int(cell_value)) + "] = { \n")
first_filed = True
for j in range(len(sheet.row_values(i))):
if field_type_list[j] == 3:
if first_filed == False:
file.write(",\n")
else:
first_filed = False
file.write("\t\t['" + field_name_list[j] + "'] = " + str(sheet.cell_value(i,j)))
file.write("\n\t\t}")
#file.write(rows4[i] + " ")
file.write("\n\t}\n")
file.write("return " + sheet.name)
file.close()
"""
"""
读取填写int 类型时,有时获取到的是带.0 的Number类型数据, 转成 string 会输出.0
"""
网友评论