python解析xls表我们用到了python中的xlrd模块
首先我们安装xlrd模块:
下载xlrd:xlrd · PyPI
然后我们了解下常用的api,然后通过简单的例子,将xls中的数据写入到lua文件中
1、导入扩展包
import xlrd
注意:如果出现 Excel xlsx file; not supported
原因:就是因为 1.2.0后面得版本取消了对xlsx文件得读取,那么我们把版本号换到以前得可以读取得版本就可以了!
解决方法:
第一步:pip uninstall xlrd
第二步:pip install xlrd==1.2.0
2、打开Excel文件读取数据
data = xlrd.open_workbook("D:/a.xlsx") #括号里面的参数是你想要打开文件路径
3、使用技巧
(1)获取一个工作表
table = data.sheets()[0] #通过索引顺序获取
table = data.sheet_by_index(0) #通过索引顺序获取
table = data.sheet_by_name(u‘Sheet1‘) #通过名称获取
(2)获取整行和整列的值(数组)
table.row_values(i)
table.col_values(i)
(3)获取行数和列数
nrows = table.nrows
ncols = table.ncols
(4)循环行列表数据
for i in range(nrows ):
print table.row_values(i)
(5)单元格
table.cell(rowx,colx)
cell_A1 = table.cell(0,0).value
cell_C4 = table.cell(3,2).value
(6)使用行列索引
cell_A1 = table.row(0)[0].value
cell_A2 = table.col(1)[0].value
(7)简单的写入
row = 0
col = 0
# 类型 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
ctype = 1 value = ‘单元格的值‘
xf = 0 # 扩展的格式化
table.put_cell(row, col, ctype, value, xf)
table.cell(0,0) #单元格的值‘
table.cell(0,0).value #单元格的值‘
xls2Lua.py
#!/usr/bin/env python
#coding=utf-8
import sys
import xlrd
import os
import os.path
import types
reload(sys)
sys.setdefaultencoding('utf-8')
#打开文件
data = xlrd.open_workbook("test.xls")
#通过索引读取页签,索引从0开始
sheet1 = data.sheet_by_index(0)
#通过页签名称读取页签
#sheet2 = data.sheet_by_name("aa")
#取所有的页签清单
sheet = data.sheets()
# 获取有几个页签
num = data.nsheets
# 获取页签名称
name = sheet1.name
#获取sheet1的行数
rows = sheet1.nrows
#获取sheet1的列数
clos = sheet1.ncols
# 获取整行的数据(第三行)
#rowData = sheet1.row_values(2)
# 获取整列的数据(第三列)
#colData = sheet1.col_values(2)
# 获取某一个单元格的数据(第二行第三列)
oneData = sheet1.cell(1,2)
pf = open("test.lua","w")
pf.write("return\n{\n")
list = {}
for i in range(data.nsheets):
sheet = data.sheet_by_index(i)
for i in range(sheet.nrows):
row_value = sheet.row_values(i)
ncols = sheet.ncols
#print(row_value)
if i > 0:
pf.write("\t{")
for j in range(ncols):
if i == 0:
list[j] = row_value[j]
else:
#print(row_value[j])
if type(row_value[j]) == types.FloatType:
print("this valus is a float type===",row_value[j])
pf.write(str(list[j]) + " = " + str(row_value[j]) + ",")
if i > 0:
pf.write("}\n")
pf.write("}\n")
pf.close()
test.xls
导出后的test.lua文件
其中 一些具体的类型可以根据需要进一步转换(文中没有实现)
另外,此教程使用的python版本是2.7的,在3.0之后已经没有没有types.xxxx类型了,可以直接用默认的类型名代替。