PYTHON-excel
---------风逸尘@罗
文章目录
- PYTHON-excel
- 一、xlwt模块写xls文件
- 二、xlrd模块读xls文件
- 三、xlutils实现两者转化
- 四、openpyxl实现读写xlsx文件
前言
Excel文件是一种二进制文件。需要安装第三方模块对excel文件进行读写。
那么,我们要使用第三方模块首先就要安装,使用windows命令窗口用下列语句行进行安装第三方模块
pip install xlwt
pip install xlrd
pip install xlutils
下面可以进行操作啦!^_^
一、xlwt模块写xls文件
1.将一个表格中的的内容写入excel文件中
序号 代码 | 名称 |
1 -600536 | 中国软件 |
2 -300170 | 汉得信息 |
3 -600756 | 浪潮软件 |
4 -300302 | 逸尘科技 |
步骤及代码如下: |
#导入模块
import xlwt
#创建工作簿
workbook=xlwt.Workbook(encoding='gbk')
#创建工作表
sheet1=workbook.add_sheet('sheet1',cell_overwrite_ok='True')
#用元组保存写入数据
d_tuple=(('序号','代码','名称'),\
('1','600536','中国软件'),\
('2','300170','汉得信息'),\
('3','600756','浪潮科技'),\
('4','520py','逸尘科技'))
#将元组数据逐行写入单元
for i in range(len(d_tuple)):
for j in range(len(d_tuple[0])):
sheet1.write(i,j,d_tuple[i][j])
#保存
workbook.save('zhangyuan.xls')
- 小结:首先导入模块
import xlwt
,再创建工作簿(workbook=xlwt.Workbook(,encoding='gbk')
,工作表(workbook.add_sheet(sheetname[,cell_overwrite_ok=True]))
,其次,写入文件,最后一步,保存文xls文件,注意文件后缀名。
二、xlrd模块读xls文件
2.将上述文件打印出来
#导入模块
import xlrd
#打开文件,获取工作簿
workbook=xlrd.open_workbook('zhangyuan.xls')
#获取工作表数量
nsheets=workbook.nsheets
#遍历每个工作表
for i in range(nsheets):
#获取第i个工作表
sheet=workbook.sheet_by_index(i)
#输出当前工作表的名称
print("第%d个工作表的名称为:%s"%(i+1,sheet.name))
#获取并打印工作表的行数与列数
nrows=sheet.nrows
ncols=sheet.ncols
print("该工作表的行数:%d列数为:%d"%(nrows,ncols))
print("该工作表的数据如下:")
#遍历所有行
for y in range(nrows):
#读取第m行数据返回一个列表
rowVaules=sheet.row_values(y)
for z in rowVaules:
print(z,end="\t")
print()
小结:
- 导入模块
- 获取工作簿
- 遍历获取工作表数量来进行遍历
- 得到第i个工作表
- 得到工作表的行数后进行遍历
- 每遍历一行将其数据返回为一个列表
- 这时将进行该列表的遍历并输出
三、xlutils实现两者转化
因为上述使用的xlrd.open_book方法返回的wlrd.Book类型的工作簿是不能修改的,因此需要进行转化。
import xlwt,xlrd,xlutils
import xlutils.copy
rb=xlrd.open_workbook('zhangyuan.xls')
#用xlutils.copy的copy方法,从xlrd.Book对象复制得到xlwt.workbook对象
wb=xlutils.copy.copy(rb)
#获取第0个sheet
sheet1=wb.get_sheet(0)
sheet1.write(0,0,'number')
sheet1.write(0,1,'code')
sheet1.write(0,2,'name')
#添加一个sheet
sheet2=wb.add_sheet('add')
sheet2.write=(0,0,'0')
sheet2.write=(1,1,'1')
sheet2.write=(2,2,'2')
#保存
wb.save('stock_add.xls')
四、openpyxl实现读写xlsx文件
写文件
import openpyxl
#创建一个工作簿,默认包含一个sheet的工作列表
workbook = openpyxl.Workbook()
#找到默认的工作表,创建别的工作表使用create_sheet方法
sheet1=workbook.active
#可以修改工作表的名字
#sheet1.title='new_sheet'
#需要写入的数据保存
d_tuple=(('序号','代码','名称'),\
('1','600536','中国软件'),\
('2','300170','汉得信息'),\
('3','600756','浪潮科技'),\
('4','520py','逸尘科技'))
iRows=len(d_tuple)
iCols=len(d_tuple[0])
for row in range(iRows):
colName='A'
for col in range(iCols):
#将信息写入单元格,如sheet1['A1']=d_tuple[0][0]
sheet1['%s%d'%(colName,row+1)]=d_tuple[row][col]#注意这里不要写成了[0][0],否则将出现全部是第一个’序号‘
colName=chr(ord(colName)+1)
#将内存中的工作簿对象保存到磁盘中
workbook.save('tock.xlsx')
读文件
import openpyxl
#从xlsx文件中导入工作簿对象
workbook=openpyxl.load_workbook('tock.xlsx')
#从工作簿获得以sheet名为元素的列表
sheetNames=workbook.sheetnames
#遍历每个sheet
for sheetName in sheetNames:
print("当前工作表的名称为:%s"%sheetName)
#根据sheet名获取sheet对象
sheet=workbook[sheetName]
#遍历sheet中的每个单元格
for i in range(sheet.max_row):
for j in range(sheet.max_column):
print(sheet.cell(row=i+1,column=j+1).value,end='\t')
print()