操作excel使用xlrd、xlwt、xlutils读取,新建,修改需要用到3个库,且只是针对xls格式,无法操作xlsx格式的excel文件,openpyxl专门针对xlsx格式,可以读写,生成图表等等,一个库搞定
当然,如果是生成excel或读取整个excel用pandas则更方便
1.一些基本用法
# -*- coding: utf-8 -*-
import openpyxl
from openpyxl.styles import Font
#新增
wb = openpyxl.Workbook()
ws = wb.active
ws['A1'].value='123'
#读取,修改
wb = openpyxl.load_workbook('d:\\sample1.xlsx')
ws = wb['Sheet1']
print(ws['A1'].value) #123
ws['A1'].value=456 #可直接进行修改
#合并单元格直接读取第一个单元格数据即可
#公式计算的单元格获取到的是公式
#多行写入,append
ws.append(["Fruit", "2011", "2012", "2013", "2014"]) #比如xlwt循环写入要方便的多
或:rows=[[1,2,3],[4,5,6]]
for row in rows:
ws.append(row)
#设置字体
ft1 = Font(name=u'宋体', size=14,color='FFBB00')
for i in range(10):
ws.append([i])
ws['A'+str(i+1)].font=ft1
# 保存
wb.save("e:\\sample.xlsx")
#设置表格样式
tab = Table(displayName="Table1", ref="A1:E5")
style = TableStyleInfo(name="TableStyleMedium2", showFirstColumn=True,
showLastColumn=True, showRowStripes=True, showColumnStripes=True)
tab.tableStyleInfo = style
ws.add_table(tab)
image.png
2.结合beatufulsoup将网页上的table数据抓取生成excel
# -*- coding: utf-8 -*-
import openpyxl
from bs4 import BeautifulSoup as bs
from urllib import request
url="http://www.example.com/info"
#response=open('123.html','r').read()
response=open(url).read()
wb=openpyxl.Workbook()
ws=wb.active
html=bs(response,features='lxml')
table=html.find_all('table')[0]
datas=[]
for tr in table.find_all('tr'):
rows=[]
for td in tr.find_all(['td','th']):
print(td.get_text())
rows.append(td.get_text())
ws.append(rows)
wb.save('result.xlsx')
其实如果使用pandas的话则更简洁,直接使用df.readhtml()方法可以直接读取table,然后再使用to_excel生成excel文件
网友评论