python解析excel表

python解析xls表我們用到了python中的xlrd模塊

首先我們安裝xlrd模塊:

下載xlrd:https://pypi.org/project/xlrd/#files

然後我們瞭解下常用的api,然後通過簡單的例子,將xls中的數據寫入到lua文件中

1、導入擴展包

  import xlrd

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章