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相关推荐

  1. 包无法安装_详细教程 | 安装Python编程环境以及使用OpenpyXl操作Excel

    详细教程 | 安装Python编程环境以及使用OpenpyXl操作Excel 注意:下列教程为 Windows7 64位:Windows 10有部分步骤有差异,请参考使用! 01 下载Python程序 ...

  2. Python办公自动化之 openpyxl 操作 Excel

    今天给大家分享一篇用 openpyxl 操作 Excel 的 Python 办公自动化文章.5分钟就能掌握- 各种数据需要导入Excel?多个Excel要合并?目前,Python处理Excel文件有很 ...

  3. python openpyxl 操作excel xlrd.biffh.XLRDError: Excel xlsx file; not supported错误修改

    python xlrd/openpyxl 操作excel xlrd.biffh.XLRDError: Excel xlsx file; not supported错误修改 代码: 错误: excel读 ...

  4. python openpyxl 操作excel ,使用 conditional_formatting,insert_rows

    场景 python 使用 openpyxl 操作 excel 对于简单的格式来说还是挺方便的,但是对于复杂的格式,操作没有手动来的简单,如果对于复杂的格式也不是用python来做的.对于一个原有的报表 ...

  5. python构建智能机器人系列博文---借助于python实现QQ,微信消息的自动发送,音乐的自动播放

    目录 一.写在前面: 二.系统实现: 三.总结反思: Author:qyan.li Date:2022.6.3 Topic:借助于python自动化技术实现指定音乐的播放和QQ,微信消息发送 一.写在 ...

  6. 1000道python题库系列_1000道Python题库系列分享三

    上一期题目链接:1000道python题库系列分享二(48道) 上一题题目参考答案: 2.1 31 2.2 'F' 2.3 python采用的是基于值得内存管理方式,在Python中可以为不同变量赋值 ...

  7. python导入自定义模块_ubuntu下Python导入自定义模块的方法

    ubuntu下Python导入自定义模块的方法 当在python程序中导入自定义模块时,若出现"Import Error:no module named xxx"表明系统在pyth ...

  8. 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 ...

  9. 派森python教程_Python系列教程一Python入门(一)

    前言 各位看博客的园友们,大家好,我就是那个风流倜傥的KK,还记得我那篇2019年的年中总结博客吗?我想有许多看博客的园友是没有读过我那篇文章的,KK很生气,后果很严重(开个玩笑了,怎么可能).给大家 ...

  10. python导入自己写的py_卧槽,神操作!一句查询让Python帮忙自己写程序

    对于很多初入Python编程的同学们而言,对于Python程序的编写,往往会十分生疏,学会了Python的语法,但是转头就忘了,或者是想实现一个基础的功能,但是程序不知道怎么去写.自己去网上找相应的问 ...

最新文章

  1. LeetCode Rotate Array(数组的旋转)
  2. Java中实现根据一个List中的数据的两个属性相同划分为同一类
  3. ORACLE TEXT LEXER PREFERENCE(四)
  4. java线程间通信:一个小Demo完全搞懂
  5. Crash 的文明世界
  6. 走出囚徒困境的方法_囚徒困境的一种计算方法
  7. 因DataValueField设置不当引起的DropDownList的SelectedItem的取不到所选值的问题
  8. 使用 LaTeX 绘制 PGM(Probabilistic Graphical Models)中的贝叶斯网络(bayesian networks)
  9. javascript跨域
  10. 小程序倒计时实现方法
  11. 计算机网络在信息时代的作用
  12. 技术总监面试有什么技巧
  13. 手机为什么手机里的计算机没在桌面,为什么桌面图标不见了
  14. svn commit 提示Aborting commit 失败问题解决办法
  15. LABVIEW 虚拟键盘 触摸键盘 中英文输入 支持WIN10 WIN7
  16. 读SQL进阶教程笔记12_地址与三值逻辑
  17. 各种风格简洁单页响应式html5模板_简洁 响应式 单页 跳转 设计 案例 源码340多套订餐企业模板高大尚响应式网站模板html5网页静态模板Bootstrap扁平化网站源码css3手机seo自适响
  18. C++基础课-郑莉 1-4章
  19. 云呐|固定资产管理系统的主要功能有哪些
  20. h5适配华为手机_手机端h5适配mete标签

热门文章

  1. 人工智能的示例——八皇后问题
  2. 基于JSP的共享单车管理系统的设计与实现
  3. PCB的安装与元器件的绘制
  4. 远程IT运维的升级,“团队协作”
  5. 【spring】 官网文档手册(附中文网址)
  6. 一张图,区分NPN于PNP型三极管的工作原理
  7. 一只小蜜蜂(C ++ 详解 )
  8. Qt实现的简单记账本软件
  9. 什么是Hadoop的MapReduce?
  10. 计算机应用基础考试题2020上机东华大学,2020年秋东华大学继续教育《大学英语3》平时作业.docx...