0
点赞
收藏
分享

微信扫一扫

Python操作Excel

斗米 2022-02-11 阅读 59




python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库。可从这里下载 ​​ https://pypi.python.org/pypi ​​ 。

参考:

​​ https://mp.weixin.qq.com/s?__biz=MzA5ODUzOTA0OQ==&mid=2651689342&idx=1&sn=1bfb56fa205decba1d821a4fec07e024&chksm=8b693238bc1ebb2e9e81bc2a370ae30f05d0ae74740993bc74c815aaacb4d991c2e7055f6e09&mpshare=1&scene=1&srcid=0109Gqxa2RAV5SCs320FQprR&key=9493c90210260ceaf9c2fb19f4aa453c320e75f00aed8b15ab95b938cc87412df051fdbf96788e408b2217ee37d9d3f1db506c48153c7677241f00de45692fd7cd97a354e8c5ec0e916c3e734023dd60&ascene=1&uin=MTk5MDM4ODY5&devicetype=Windows-QQBrowser&version=6103000b&lang=zh_CN&pass_ticket=W3PB9Gy%2F%2Fm0ucX4yyJDfLx4tmJE90pRQ3pBnrbnMvKA%3D ​​


基本代码:

import xlwt
# workbook = xlwt.Workbook(encoding='utf-8')#创建workbook 其实就是execl,
# worksheet = workbook.add_sheet('my_worksheet') #创建表,如果想创建多个,直接在后面再add_sheet
# worksheet.write(0,0,label ='Row 0,Column 0 Value') #3个参数,第一个参数表示行,从0开始,第二个参数表示列,从0开始,第三个参数表示插入的数值
# workbook.save('./download/execl_lhr.xlsx') #写完记得一定要保存
def set_style(name, height, bold=False):
style = xlwt.XFStyle() # 初始化样式
font = xlwt.Font() # 为样式创建字体
font.name = name
font.bold = bold
font.colour_index = 2
font.height = height
style.font = font
return style
#写excel
def write_excel():
f = xlwt.Workbook(encoding='gbk') # 创建工作薄
# 创建个人信息表
sheet1 = f.add_sheet(u'个人信息', cell_overwrite_ok=True)
rowTitle = [u'编号', u'姓名', u'性别', u'年龄']
rowDatas = [[u'张一', u'男', u'18'], [u'李二', u'女', u'20'], [u'黄三', u'男', u'38'], [u'刘四', u'男', u'88']]
for i in range(0,len(rowTitle)):
sheet1.write(0,i,rowTitle[i],set_style('Times New Roman',220,True)) #后面是设置样式
for k in range(0,len(rowDatas)): #先遍历外层的集合,即每行数据
rowDatas[k].insert(0,k+1) #每一行数据插上编号即为每一个人插上编号
for j in range(0,len(rowDatas[k])): #再遍历内层集合
sheet1.write(k+1,j,rowDatas[k][j]) #写入数据,k+1表示先去掉标题行,另外每一行数据也会变化,j正好表示第一列数据的变化,rowdatas[k][j] 插入数据
# 创建个人收入表
sheet1 = f.add_sheet(u'个人收入表',cell_overwrite_ok=True)
rowTitle2 = [u'编号',u'姓名',u'学历',u'工资']
rowDatas2 = [[u'张一',u'本科',u'8000'],[u'李二',u'硕士',u'10000'],[u'黄三',u'博士',u'20000'],[u'刘四',u'教授',u'50000']]
for i in range(0,len(rowTitle2)):
sheet1.write(0,i,rowTitle2[i])
for k in range(0,len(rowDatas2)): #先遍历外层的集合
rowDatas2[k].insert(0,k+1) #每一行数据插上编号即为每一个人插上编号
for j in range(0,len(rowDatas2[k])): #再遍历内层集合
sheet1.write(k+1,j,rowDatas2[k][j]) #写入数据,k+1表示先去掉标题行,另外每一行数据也会变化,j正好表示第一列数据的变化,rowdatas[k][j] 插入数据
f.save('./download/excel_write_base.xlsx')
if __name__ == '__main__':
#generate_workbook()
#read_excel()
write_excel()


代码2:

import  xlwt
def set_style(name,height,bold=False):
style = xlwt.XFStyle() # 初始化样式
font = xlwt.Font() # 为样式创建字体
font.name = name # 'Times New Roman'
font.bold = bold
font.color_index = 4
font.height = height
# borders= xlwt.Borders()
# borders.left= 6
# borders.right= 6
# borders.top= 6
# borders.bottom= 6
style.font = font
# style.borders = borders
return style
#写excel
def write_excel():
f = xlwt.Workbook() #创建工作簿
'''
创建第一个sheet:
sheet1
'''
sheet1 = f.add_sheet(u'sheet1',cell_overwrite_ok=True) #创建sheet
row0 = [u'业务',u'状态',u'北京',u'上海',u'广州',u'深圳',u'状态小计',u'合计']
column0 = [u'机票',u'船票',u'火车票',u'汽车票',u'其它']
status = [u'预订',u'出票',u'退票',u'业务小计']
#生成第一行
for i in range(0,len(row0)):
sheet1.write(0,i,row0[i],set_style('Times New Roman',220,True))
#生成第一列和最后一列(合并4行)
i, j = 1, 0
while i < 4*len(column0) and j < len(column0):
sheet1.write_merge(i,i+3,0,0,column0[j],set_style('Arial',220,True)) #第一列
sheet1.write_merge(i,i+3,7,7) #最后一列"合计"
i += 4
j += 1
sheet1.write_merge(21,21,0,1,u'合计',set_style('Times New Roman',220,True))
#生成第二列
i = 0
while i < 4*len(column0):
for j in range(0,len(status)):
sheet1.write(j+i+1,1,status[j])
i += 4
f.save('./download/excel_write_merge.xlsx') #保存文件
if __name__ == '__main__':
#generate_workbook()
#read_excel()
write_excel()



  超链接

import xlwt
book = xlwt.Workbook()
sheet_index = book.add_sheet('index')
line=0
for i in range(9):
sheet1 = book.add_sheet(str(i))
sheet1.write(0,0,str(i))
link = 'HYPERLINK("#%s";"%s")' % (str(i), str(i))
sheet_index.write(line, 0, xlwt.Formula(link))
line+=1
book.save('./download/simple2.xls')



举报

相关推荐

0 条评论