python解析excel表,excel转化成lua

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类型了,可以直接用默认的类型名代替。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值