python导入openpyxl_python系列之(6)Python使用Openpyxl操作Excel
1.安装
pip install openpyxl
2.使用方法
2.1 给单元格和行赋值
from openpyxl importWorkbook
wb=Workbook()#获取第一个活动的sheet,默认创建excel会有一个sheet
ws =wb.active#单元格直接赋值
ws['A1'] = 42
#按行赋值
ws.append([1,2,3])importdatetime
ws['A2'] =datetime.datetime.now()
wb.save("1.xlsx")
2.2 创建sheet
from openpyxl importWorkbook
wb=Workbook()#在末尾插入
ws1 = wb.create_sheet("Mysheet")
ws1.title= "New Title"
#在开始插入
ws2 = wb.create_sheet("Mysheet", 0)
ws2.title="你好"
#在倒数第二个位置插入
ws3= wb.create_sheet("Mysheet", -1)
ws3.title="third"ws1.sheet_properties.tabColor= "1072BA"
for sheet inwb:print(sheet.title)
wb.save("create_sheet.xlsx")
2.3 操作单元格
from openpyxl importWorkbook
wb=Workbook()
ws1=wb.create_sheet("Mysheet")
ws1["A1"]=124.45ws1["B2"]="您好"
#为第四行第二列也就是B4赋值10
d=ws1.cell(row=4, column=2, value=10)
wb.save("cell.xlsx")
2.4 批量操作单元格
from openpyxl importWorkbook
wb=Workbook()
ws=wb.activefor row in ws.iter_rows(min_row=1, max_col=3, max_row=2):for cell inrow:
cell.value="test"
print(cell)for col in ws.iter_rows(min_row=3, max_col=3, max_row=4):for cell incol:
cell.value="hello"
print(cell)
ws['c9']='hello world'tuple(ws.rows)
wb.save("batchcell.xlsx")
执行完之后,会在A1,B1,C1,A2,B2,C2赋值test,在A3,B3,C3,A4,B4,C4赋值hello
2.5 操作已经存在的Excel
#-*- coding: utf-8 -*-
from openpyxl importWorkbookfrom openpyxl importload_workbook
wb= load_workbook('sample.xlsx')
wb.guess_types= True #猜测格式类型
ws=wb.active
ws["D1"]="12%"
#Save the file
wb.save("sample.xlsx")
2.6 使用公式
from openpyxl importWorkbookfrom openpyxl importload_workbook
wb= load_workbook("sample.xlsx")
ws1=wb.active
ws1["A1"] = 1ws1["A2"] = 2ws1["A3"] = 3ws1["A4"] = "=SUM(1,1)"ws1["A5"] = "=SUM(A1:A3)"wb.save("sample.xlsx")
2.7 合并单元格
from openpyxl importWorkbookfrom openpyxl importload_workbook
wb= load_workbook("sample.xlsx")
ws1=wb.active
ws1.merge_cells("A2:D2")#ws1.unmerge_cells("A2:D2")
ws1.merge_cells(start_row=2,start_column=1,end_row=2,end_column=4)#ws1.unmerge_cells(start_row=2,start_column=1,end_row=2,end_column=4)
wb.save("sample.xlsx")
2.8 插入图片
from openpyxl importload_workbookfrom openpyxl.drawing.image importImage
wb= load_workbook("sample.xlsx")
ws1=wb.active
img= Image("jielun.png")
ws1.add_image(img,'A1')
wb.save("sample.xlsx")
2.9 隐藏单元格
from openpyxl importload_workbookfrom openpyxl.drawing.image importImage
wb= load_workbook("sample.xlsx")
ws1=wb.active
ws1.column_dimensions.group('A', 'D', hidden=True)
wb.save("sample.xlsx")
2.10 画柱状图
from openpyxl importload_workbookfrom openpyxl importWorkbookfrom openpyxl.chart importBarChart,Reference,Series
wb=Workbook()
ws=wb.activefor i in range(10):
ws.append([i])
values= Reference(ws, min_col=1, min_row=1, max_col=1, max_row=10)
chart=BarChart()
chart.add_data(values)
ws.add_chart(chart,"E15")
wb.save("sample.xlsx")
2.11 画饼状图
#-*- coding: utf-8 -*-
from openpyxl importload_workbookfrom openpyxl importWorkbookfrom openpyxl.chart import(PieChart , ProjectedPieChart, Reference)from openpyxl.chart.series importDataPoint
data=[
['Pie', 'Sold'],
['Apple', 50],
['Cherry', 30],
['Pumpkin', 10],
['Chocolate', 40],
]
wb=Workbook()
ws=wb.activefor row indata:
ws.append(row)
pie=PieChart()
labels= Reference(ws, min_col=1, min_row=2, max_row=5)
data= Reference(ws, min_col=2, min_row=1, max_row=5)
pie.add_data(data, titles_from_data=True)
pie.set_categories(labels)
pie.title= "Pies sold by category"
#Cut the first slice out of the pie
slice = DataPoint(idx=0, explosion=20)
pie.series[0].data_points=[slice]
ws.add_chart(pie,"D1")
ws= wb.create_sheet(title="Projection")
data=[
['Page', 'Views'],
['Search', 95],
['Products', 4],
['Offers', 0.5],
['Sales', 0.5],
]for row indata:
ws.append(row)
projected_pie=ProjectedPieChart()
projected_pie.type= "pie"projected_pie.splitType= "val" #split by value
labels = Reference(ws, min_col=1, min_row=2, max_row=5)
data= Reference(ws, min_col=2, min_row=1, max_row=5)
projected_pie.add_data(data, titles_from_data=True)
projected_pie.set_categories(labels)
ws.add_chart(projected_pie,"A10")from copy importdeepcopy
projected_bar=deepcopy(projected_pie)
projected_bar.type= "bar"projected_bar.splitType= 'pos' #split by position
ws.add_chart(projected_bar,"A27")#Save the file
wb.save("sample.xlsx")
2.12 表格
from openpyxl.worksheet.table importTable, TableStyleInfo
wb=Workbook()
ws=wb.active
data=[
['Apples', 10000, 5000, 8000, 6000],
['Pears', 2000, 3000, 4000, 5000],
['Bananas', 6000, 6000, 6500, 6000],
['Oranges', 500, 300, 200, 700],
]#add column headings. NB. these must be strings
ws.append(["Fruit", "2011", "2012", "2013", "2014"])for row indata:
ws.append(row)
tab= Table(displayName="Table1", ref="A1:E5")#Add a default style with striped rows and banded columns
style = TableStyleInfo(name="TableStyleMedium9", showFirstColumn=True,
showLastColumn=True, showRowStripes=True, showColumnStripes=True)#第一列是否和样式第一行颜色一行,第二列是否···#是否隔行换色,是否隔列换色
tab.tableStyleInfo =style
ws.add_table(tab)#Save the file
wb.save("sample.xlsx")
2.13 字体
#-*- coding: utf-8 -*-
from openpyxl importWorkbookfrom openpyxl.styles importFont
wb=Workbook()
ws=wb.active
ws["A1"] = "测试"ws["A2"] = "字体"col= ws.column_dimensions['A']
col.font= Font(bold=True) #将A列设定为粗体
row = ws.row_dimensions[1]
row.font= Font(underline="single") #将第一行设定为下划线格式
#Save the file
wb.save("sample.xlsx")
3.使用爬虫爬取贝壳网二手房的信息并存入到excel
importsysfrom os importpathimporttimeimporturllib3importrequestsimportnumpy as npfrom bs4 importBeautifulSoupfrom urllib importparsefrom openpyxl importWorkbookfrom openpyxl importload_workbook
headers=[{'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'},\
{'User-Agent':'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.12 Safari/535.11'},\
{'User-Agent': 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)'}]defget_house():
page_num=0;
total_num=0;
wb=Workbook()
ws= wb.create_sheet("housesheet")
ws.append(["title","tall","year","house","area","direction", "tag","totalPrice", "unitPrice"])while(1):
page_num+=1url= "https://bj.ke.com/ershoufang/pg"+str(page_num)+"/"
print(url)
http=urllib3.PoolManager()
time.sleep(np.random.rand()*5)try:
r= http.request("GET", url, headers=headers[page_num%len(headers)])
plain_text=r.data.decode()print(plain_text)exceptException as e:print(e)continuesoup= BeautifulSoup(plain_text, features="lxml")
ligroup= soup.find_all("li", class_="clear")for item inligroup:try:
title= item.find("div", class_="title").a.get("title")
content= item.find("div", class_="houseInfo").get_text()
contents= content.strip().split("|")
tall= contents[0].strip().replace("\n","")
year= contents[1].strip()
house= contents[2].strip().replace("\n", "")
area= contents[3].strip().replace("\n", "")
direction= contents[4].strip()
tag= item.find("div", class_="tag").find("span").get_text()
totalPrice= item.find("div", class_="totalPrice").get_text()
unitPrice= item.find("div", class_="unitPrice").get_text().strip().replace("\n", "")
ws.append([title, tall,year,house,area,direction,tag,totalPrice,unitPrice])exceptException as e:print(e)continue
if page_num > 20:breakwb.save("hosuebeike.xlsx")if __name__=='__main__':
get_house()
跑完之后,在当前目录下会有一个excel文件,打开看一下,部分截图如下:
python导入openpyxl_python系列之(6)Python使用Openpyxl操作Excel相关推荐
- 包无法安装_详细教程 | 安装Python编程环境以及使用OpenpyXl操作Excel
详细教程 | 安装Python编程环境以及使用OpenpyXl操作Excel 注意:下列教程为 Windows7 64位:Windows 10有部分步骤有差异,请参考使用! 01 下载Python程序 ...
- Python办公自动化之 openpyxl 操作 Excel
今天给大家分享一篇用 openpyxl 操作 Excel 的 Python 办公自动化文章.5分钟就能掌握- 各种数据需要导入Excel?多个Excel要合并?目前,Python处理Excel文件有很 ...
- python openpyxl 操作excel xlrd.biffh.XLRDError: Excel xlsx file; not supported错误修改
python xlrd/openpyxl 操作excel xlrd.biffh.XLRDError: Excel xlsx file; not supported错误修改 代码: 错误: excel读 ...
- python openpyxl 操作excel ,使用 conditional_formatting,insert_rows
场景 python 使用 openpyxl 操作 excel 对于简单的格式来说还是挺方便的,但是对于复杂的格式,操作没有手动来的简单,如果对于复杂的格式也不是用python来做的.对于一个原有的报表 ...
- python构建智能机器人系列博文---借助于python实现QQ,微信消息的自动发送,音乐的自动播放
目录 一.写在前面: 二.系统实现: 三.总结反思: Author:qyan.li Date:2022.6.3 Topic:借助于python自动化技术实现指定音乐的播放和QQ,微信消息发送 一.写在 ...
- 1000道python题库系列_1000道Python题库系列分享三
上一期题目链接:1000道python题库系列分享二(48道) 上一题题目参考答案: 2.1 31 2.2 'F' 2.3 python采用的是基于值得内存管理方式,在Python中可以为不同变量赋值 ...
- python导入自定义模块_ubuntu下Python导入自定义模块的方法
ubuntu下Python导入自定义模块的方法 当在python程序中导入自定义模块时,若出现"Import Error:no module named xxx"表明系统在pyth ...
- python导入模块失败_关于python导入模块失败的问题
1.下载netsnmp的源码包, net-snmp-5.7.3.zip 2.解压并安装,tar xzvf net-snmp-5.7.3.zip; cd net-snmp-5.7.3; ./config ...
- 派森python教程_Python系列教程一Python入门(一)
前言 各位看博客的园友们,大家好,我就是那个风流倜傥的KK,还记得我那篇2019年的年中总结博客吗?我想有许多看博客的园友是没有读过我那篇文章的,KK很生气,后果很严重(开个玩笑了,怎么可能).给大家 ...
- python导入自己写的py_卧槽,神操作!一句查询让Python帮忙自己写程序
对于很多初入Python编程的同学们而言,对于Python程序的编写,往往会十分生疏,学会了Python的语法,但是转头就忘了,或者是想实现一个基础的功能,但是程序不知道怎么去写.自己去网上找相应的问 ...
最新文章
- LeetCode Rotate Array(数组的旋转)
- Java中实现根据一个List中的数据的两个属性相同划分为同一类
- ORACLE TEXT LEXER PREFERENCE(四)
- java线程间通信:一个小Demo完全搞懂
- Crash 的文明世界
- 走出囚徒困境的方法_囚徒困境的一种计算方法
- 因DataValueField设置不当引起的DropDownList的SelectedItem的取不到所选值的问题
- 使用 LaTeX 绘制 PGM(Probabilistic Graphical Models)中的贝叶斯网络(bayesian networks)
- javascript跨域
- 小程序倒计时实现方法
- 计算机网络在信息时代的作用
- 技术总监面试有什么技巧
- 手机为什么手机里的计算机没在桌面,为什么桌面图标不见了
- svn commit 提示Aborting commit 失败问题解决办法
- LABVIEW 虚拟键盘 触摸键盘 中英文输入 支持WIN10 WIN7
- 读SQL进阶教程笔记12_地址与三值逻辑
- 各种风格简洁单页响应式html5模板_简洁 响应式 单页 跳转 设计 案例 源码340多套订餐企业模板高大尚响应式网站模板html5网页静态模板Bootstrap扁平化网站源码css3手机seo自适响
- C++基础课-郑莉 1-4章
- 云呐|固定资产管理系统的主要功能有哪些
- h5适配华为手机_手机端h5适配mete标签