前言
最近工作常要干些excel导入导出的活,用python来做最方便,写的多了,就想封装下读写的操作,后续通用,python菜鸟,大佬轻喷(不服可以来写Java ....当我没说)
设计
1.python用于excel操作的就是xlrd,xlwt两个模块,分别是负责读/写
2.封装一个excel操作的类,支持读/写操作,定义数据格式,方便读/写
代码
# -*- coding: utf-8 -*-
'this is xls util'
import xlrd
import xlwt
class xlsUtil:
def read(self, path):
'''
:param path: string 文件路径
'''
workbook = xlrd.open_workbook(path)
data_sheet = workbook.sheets()[0]
row_num = data_sheet.nrows
col_num = data_sheet.ncols
data = []
for i in range(row_num):
row_data = []
for j in range(col_num):
if(i == 0):
continue
row_data.append(data_sheet.cell_value(i, j))
data.append(row_data)
print(data)
return data
def write(self, data, header, out_path):
'''
:param data: array 表格数据
:param header: array 表头数据
:param out_path: string 输出路径
'''
wbk = xlwt.Workbook()
sheet = wbk.add_sheet('Sheet1', cell_overwrite_ok=True)
for i in range(len(header)):
sheet.write(0, i, header[i])
for row in range(len(data)):
for col in range(len(data[row])):
sheet.write(row+1, col, data[row][col])
print(out_path)
wbk.save(out_path)
# test read and write
if __name__ == '__main__':
xls_util = xlsUtil()
xls_util.read('/Users/kelin/Documents/library.xlsx')
xls_util.write([[1.0, '海底世界', '1.mp4', '1.png', 'animal:动物,coral:珊瑚,crab:蟹,dolphin:海豚,jellyfish:水母,near:靠近,ocean:海洋,plant:植物,soft:软的,tail:尾巴', '神秘的海底世界,色彩斑斓,有好多好多的动物,海龟、海豚、海豹、水母…… 鲸是怎么跳得那么高的呢,一起去看看吧~', '免费'], [2.0, '沙滩上的一天', '2.mp4', '2.png', 'brown:棕色的,cute:可爱,desk:书桌,great:美好的,late:晚的,seashell:贝壳,sky:天空,put:放,small:小的,star:星星', '沙滩,阳光,贝壳。我们会在沙滩上看到些什么呢?这一天的旅行是怎么度过呢?让我们一起度过这美好的一天吧。', '免费'], [
3.0, '沙滩,我来了!', '3.mp4', '3.png', 'beach:海滩,sea:海,shorts:短裤,summertime:夏日,swimsuit:泳衣,wave:波浪,wear:穿,sunscreen:防晒霜,tank top:背心,sunglasses:太阳眼镜', '炎炎夏日,最好的去处当然是沙滩啦。为了我们的沙滩旅行,我们需要准备些什么呢?在沙滩上,我们又会做些什么游戏呢?', '会员'], [4.0, '在度假中', '4.mp4', '4.png', 'beach:海滩,having a picnic:吃野餐,hungry:饿的,sand:沙子,sea:海,looking at:看着,sitting on:坐在…上,looking for:寻找着,together:一起,yard:院子', '度假时间到了,让我们一去去逛逛,沙滩,花园,大海,让我们一起去看看我们小伙伴的度假时光吧。', '会员']],
['编号', '名称', '视频文件', '封面文件', '单词', '简介', '权限'],'/Users/kelin/Documents/test_new2.xlsx')
read:
给定文件路径path,通过xlrd.open_workbook打开工作簿
拿到对应的sheets,nrows获取可用行,ncols获取可用列
循环遍历后append到二维数组输出
write :
data:二维数组数据
hader:表头,会输出表格到第一行
out_path:输出路径
通过Workbook.add_sheet方法增加sheet,再循环遍历write到指定单元格