目前的公司的项目需要将策划给的excel文件弄成xml格式。上网搜了下,感觉用python 写个脚本转换比较方便。第一步学习下看python是如何解析excel的。首先需要安装python和第三方库xlrd。不多说了,自己使用的python是2.6版本。在Windows下解析。
简单说下解析的大致步骤:
1. 引入xlrd包,调用他的open_workbook方法打开excel文件读取里面的数据,这个方法参数很多,主要是第一个,传入要解析的excel文件。
data = xlrd.open_workbook("自己的excel路径")
2.然后需要获取excel中的某个工作表,xlrd提供了三种方法:
table = data.sheets()[index] index就是就是左下角的工作表的索引顺序,从0开始。
table = data.sheet_by_index(index) 看下他们的实现发现这个和上面的其实一样的,只是上一种是data.sheets()或获取此excel中的所有表,生成一个list,再通过列表的下标取到我们需要的表。
table = data.sheet_by_name(u'sheet_name'),这个是通过表的名称来获取的
3.可以通过table.nrows来获取表的行数,table.ncols来获取表的列数
4.这样可以获取到整行的数据 talbe.row_values(index) ,index就是要获取的所在行数,返回的是一个list列表保存数据。通用的道理,table.col_values(index),就是index列的数据。返回list。
5.获取单元格的数据。通过table.cell(row_index, col_index)可以得到excel中row_index行col_index列的数据,这样得到的其实是这样的数据:类型: 字段名(unicode编码),我们这里使用的是utf-8编码,比如我们这个excel表中的第一行第一列的table.cell(0, 0)得到的就是:text:u'itemID'。要是获取值就使用table.cell(row_index, col_index).value即可。
由于我们这里只是简单的解析出已经存在的excel表,所以非常简单。写了非常简单的列子,将解析的数据打印出来。先看看excel文件内容
再看看代码:
#! encoding=utf-8
import xlrd
def open_excel(file):
try:
data = xlrd.open_workbook(file)
return data
except Exception, e:
print str(e)
def excel_table_byindex(file, colnnameindex=0, by_index=0):
data = open_excel(file)
table = data.sheets()[by_index]
#行数
nrows = table.nrows
#列数
ncols = table.ncols
#打印出每个单元格的数据
for nrow in range(0, nrows):
#rownames = table.row_values(nrow)
#print rownames
for ncol in range(0, ncols):
#colnames = table.col_values(ncol)
#print colnames
print table.cell(nrow, ncol).value
if __name__ == "__main__":
excel_table_byindex('D:\daoju.xlsx')
代码是非常简单的,由于结果 很多,只是截取了一部分看看