统计
  • 建站日期:2021-03-10
  • 文章总数:3772 篇
  • 评论总数:29 条
  • 分类总数:43 个
  • 最后更新:5月19日
文章 未分类

openpyxl怎么安装 (openpyxl经常使用教程 Python)

小菜鸡
首页 未分类 正文

装置方法,pipinstallopenpyxl国际镜像装置,pipinstall,ihttps,mirrors.aliyun.com,pypi,simple,openpyxl,介绍,装置更快,中文文档,https,www.osgeo.cn,openpyxl,index.html#usage,examples上班簿、上班表、单元...。

  • 装置方法  pip install openpyxl  
  • 国际镜像装置  pip install -i https://mirrors.aliyun.com/pypi/simple/ openpyxl   (介绍,装置更快)
  • 中文文档https://www.osgeo.cn/openpyxl/index.html#usage-examples
  • 上班簿、上班表、单元格之间的相关
  • 一个上班簿(workbook)由多个上班表(worksheet)组成;
  • 一个上班表有多个单元格(cell)组成;
  • 经过行(row)和列(column)可以定位到单元格。

新建并写入文件

  • Workbook ():新建excel文件,新建文件时自动有一个名为Sheet上班表
# coding=utf-8from openpyxl import Workbook
wb  Workbook # 新建上班簿ws  wbactive # 失掉上班表wsappend'姓名' '学号' '年龄' # 追加一行数据wsappend'张三' "1101" 17 # 追加一行数据wsappend'李四' "1102" 18 # 追加一行数据wbsaver'测试1.xlsx' # 保管到指定门路,保管的文件必定不能处于关上形态,由于文件关上后文件只读

关上并读取文件

  • load_workbook (path):加载指定门路的excel文件
# coding=utf-8from openpyxl import load_workbook
wb  load_workbookr'测试1.xlsx' # 失掉已存在的上班簿ws  wbactive # 失掉上班表for row in wsvalues # 输入一切数据printrow

上班簿对象-workbook

  • wb. active :失掉第一张上班表对象
  • wb[sheet_name] :失掉指定称号的上班表对象
  • wb.sheetnames :失掉一切上班表称号
  • wb.worksheets:失掉一切上班表对象,wb.worksheets[0]可以依据索引失掉上班表,0代表第一个
  • wb. create_sheet (sheet_name,index=“end”):创立并前往一个上班表对象,自动位置最后,0代表第一个
  • wb.copy_worksheet(sheet):在以后上班簿复制指定的上班表并前往返制后的上班表对象
  • move_sheet( sheet, offset=0):移动上班表,offset代表偏移量,正数向后移,正数向前移
  • wb.remove(sheet):删除指定的上班表
  • ws.save(path):保管到指定门路path的Excel文件中,若文件不存在会新建,若文件存在会笼罩
# coding=utf-8from openpyxl import load_workbook
wb  load_workbookr"测试1.xlsx""""失掉上班表"""active_sheet  wbactive    # 失掉第一个上班表printactive_sheet         # 输入上班表:<Worksheet "Sheet">by_name_sheet  wb"Sheet"              # 依据上班表称号失掉上班表by_index_sheet  wbworksheets0     # 依据上班表索引失掉上班表"""失掉一切上班表"""print"失掉一切"wbsheetnames"""新建上班表"""New_Sheet  wbcreate_sheet"New"  # 在最后新建上班表First_Sheet  wbcreate_sheet"First"index0  # 在扫尾新建上班表print"新建后"wbsheetnames"""复制上班表"""Copy_Sheet  wbcopy_worksheetactive_sheet    # 复制第一个上班表Copy_Sheettitle  "Copy"print"复制后"wbsheetnames"""删除上班表"""wbremoveFirst_Sheet      # 依据指定的上班表对象删除上班表wbremoveNew_Sheetprint"删除后"wbsheetnames
wbsaver"测试2.xlsx"

上班表对象-worksheet

  • ws.title:失掉或设置上班表名
  • ws. max_row :上班表最大行数
  • ws.max_column:上班表最大列数
  • ws. append (list):表格末尾追加数据
  • ws.merged_cells:失掉一切兼并单元格
  • ws.merge_cells(‘A2:D2’):兼并单元格
  • ws.unmerge_cells(‘A2:D2’):解除兼并单元格。
# coding=utf-8from openpyxl import load_workbook
wb  load_workbookr'测试1.xlsx' # 失掉已存在的上班簿ws  wbactiveprint"上班表名"wstitle
wstitle  "在校生信息表"print"修正后上班表名"wstitleprint"最大行数"wsmax_rowprint"最大列数"wsmax_column
wsappend"王五""1103"17print"最大行数"wsmax_row
wbsaver"测试3.xlsx"

单元格读取

  • ws[‘A1’]:依据坐标失掉单个单元格对象
  • ws. cell (row, column, value=None):依据行列失掉单个单元格对象,其中cell(1,1)代表A1
  • ws[1]:失掉第一行一切单元格对象,ws[“1”]也可
  • ws[“A”]:失掉第A列一切单元格对象
  • ws[“A”:“B”]:失掉A到B列一切单元格对象,ws[“A:B”]也可
  • ws[1:2]:失掉1到2行一切单元格对象,ws[“1:2”]也可
  • ws[“A1”:“B2”]:失掉A1到B2范畴一切单元格对象,ws[“A1:B2”]也可。
# coding=utf-8from openpyxl import load_workbook
wb  load_workbookr'测试1.xlsx'ws  wbactive
A1  ws"A1"     # 依据坐标失掉单个单元格print"第一行第一列"wscell11    # 依据行列失掉单个单元格print"第一行"ws1print"第A列"ws"A"print"A到B列"ws"A""B"print"1到2行"ws"1""2"print"A1到B2范畴"ws"A1""B2"
  • ws. values :失掉一切单元格数据的可迭代对象,可以经过for循环迭代或经过list(ws.values)转换为数据列表
# coding=utf-8from openpyxl import load_workbook
wb  load_workbookr'测试1.xlsx'     # 失掉已存在的上班簿ws  wbactive  # 失掉上班表for row in wsvalues       # for循环迭代printrowprintlistwsvalues# 转换为数据列表
  • ws. rows :失掉一切数据以行的格局组成的可迭代对象
  • ws. columns :失掉一切数据以列的格局组成的可迭代对象
# coding=utf-8from openpyxl import load_workbook
wb  load_workbookr'测试1.xlsx'ws  wbactivefor row in wsrows  # 以行的方式迭代printrowprint55for col in wscolumns  # 以列的方式迭代printcol
  • ws. iter_rows (min_row=None, max_row=None, min_col=None, max_col=None):失掉指定边界范畴并以行的格局组成的可迭代对象,自动一切行
  • ws. iter_cols (min_col=None, max_col=None, min_row=None, max_row=None): 失掉指定边界范畴并以列的格局组成的可迭代对象,自动一切列
# coding=utf-8from openpyxl import load_workbook
wb  load_workbookr'测试1.xlsx'ws  wbactivefor row in wsiter_rowsmax_row2max_col2  # 指定边界范畴并以行的方式可迭代printrowprint35for column in wsiter_colsmax_row2max_col2  # 指定边界范畴并以行的方式可迭代printcolumn

单元格对象 - cell

  • cell.value :失掉或设置值
  • cell.column : 数字列标
  • cell.column_letter : 字母列标
  • cell.row : 行号
  • cell.coordinate : 坐标,例如’A1’
  • cell.data_type : 数据类型, ’s‘ = string字符串,‘n’ = number数值,会依据单元格值智能判别
  • cell.number_format :单元格格局,自动”General“惯例,详见excel自定义数据类型
  • cell.hyperlink:失掉或设置单元格超链接(可以是网址或许本地文件门路)
# coding=utf-8from openpyxl import Workbook
wb  Workbook  # 新建上班簿ws  wbactive"""失掉与设置单元格值的两种方式"""cell1  wscell1 1  # 先失掉第一行第一列的单元格对象cell1value  18  # 再设置单元格对象的值print"值" cell1valueprint"数字列标" cell1columnprint"字母列标" cell1column_letterprint"行号" cell1rowprint"坐标" cell1coordinate
cell2  wscell2 1 17  # 间接在失掉单元格的时刻设置值"""经常使用公式和不实用公式"""cell3  wscell3 1 "=A1+A2"  # 间接输入公式具备计算性能cell4  wscell4 1 "=A1+A2"cell4data_type  's'  # 指定单元格数据类型为文本可以防止公式被计算"""设置格局和不设置格局"""cell5  wscell5 1 3.1415  # 自动惯例格局cell6  wscell6 1 3.1415cell6number_format  "0.00"  # 设置格局为保管两位小数"""超链接"""cell7  wscell7 1 "百度翻译"cell7hyperlink  "https://fanyi.baidu.com/"  # 设置超链接# cell7.hyperlink = r"C:UsersadminDesktop测试.xlsx" # 关上本地文件# print(cell7.hyperlink.target) # 失掉超链接地址cell7font  Fontcolor"0000FF" underline'single'  # 字体色彩为蓝色+下划线wbsaver'测试4.xlsx'  # 保管到指定门路

单元格样式

  • cell.font :失掉或设置单元格Font对象
  • cell.border : 失掉或设置单元格边框
  • cell.alignment : 失掉或设置单元格水平、垂直对齐方式、智能换行等
  • cell.fill:失掉或设置单元格填充色彩
from openpyxl import Workbookfrom openpyxlstyles import Font Border Side AlignmentPatternFillfrom copy import copy
wb  Workbook
ws  wbactive"""失掉单元格并设置单元格值为 姓名 """cell  wscell11"姓名""""设置单元格文字样式"""cellfont  FontboldTrue # 加粗italicTrue # 歪斜name"楷体" # 字体size13 # 文字大小color"FF0000" # 字体色彩为白色underline'single' # 下划线"""复制单元格样式"""cell2  wscell12"学号"cell2font  copycellfont"""设置单元格边框为彩色边框"""cellborder  BorderbottomSidestyle'thin' color'000000'rightSidestyle'thin' color'000000'leftSidestyle'thin' color'000000'topSidestyle'thin' color'000000'"""设置单元格对齐方式为水平居中和垂直居中,单元格内容超出范畴智能换行"""cellalignment  Alignmenthorizontal'center'vertical'center'wrap_textTrue"""设置单元格底纹色彩为黄色"""cellfill  PatternFillfill_type'solid' start_color'FFFF00'"""白色:FFFFFF,彩色:000000,白色:FF0000,黄色:FFFF00绿色:00FF00,蓝色:0000FF,橙色:FF9900,灰色:C0C0C0经常出现色彩代码表:https://www.osgeo.cn/openpyxl/styles.html#indexed-colours
"""wbsaver"测试5.xlsx"

列宽与行高

  • ws.row_dimensions[行号]:失掉行对象(非行数据,包括行的相关属性、行初等)
  • ws.column_dimensions[字母列标]:失掉列对象(非行数据,包括行的相关属性、列宽等)
  • get_column_letter(index):依据列的索引前往字母
  • column_index_from_string(string):依据字母前往列的索引
  • row.height:失掉或设置行高
  • column.width:失掉或设置列宽
from openpyxl import Workbookfrom openpyxlutils import get_column_lettercolumn_index_from_string
wb  Workbook
ws  wbactive"""行"""row  wsrow_dimensions1  # 失掉第一行行对象print"行号"rowindex
rowheight  20     # 设置行高print"行高"rowheight"""列"""column  wscolumn_dimensions"A"     # 依据字母列标失掉第一列列对象column  wscolumn_dimensionsget_column_letter1    # 依据数字列标失掉第一列列对象print"字母列标"columnindexprint"数字列标"column_index_from_stringcolumnindex
columnwidth  15  # 设置列宽print"列宽"columnwidth
wbsaver'测试6.xlsx'

如何依据输入内容计算其在excel的列宽是多少?

  • 应用GBK编码方式,非汉字字符占1个长度,汉字字符占2个长度
from openpyxl import Workbookfrom openpyxlutils import get_column_lettercolumn_index_from_string
wb  Workbook
ws  wbactive
column  wscolumn_dimensionsget_column_letter1    # 依据数字列标失掉第一列列对象value  "我爱中国ILoveChain"# 4*2+10*1+1=19columnwidth  lenstrvalueencode"GBK"1  # 依据内容设置列宽,+1既可以补充误差又可以让两头留有必定的空白,好看print"列宽"columnwidth   # 输入:19wscell11value
wbsaver'测试6.xlsx'

拔出和删除行和列

  • ws.insert_rows(row_index,amount=1):在第row_index行上方拔出amount列,自动拔出1列
  • ws.insert_cols(col_index,amount=1):在第col_index列左侧拔出amount列,自动拔出1列
  • ws.delete_rows(row_index,amount=1):从row_index行开局向下删除amount行,自动删除1行
  • ws.delete_cols(col_index,amount=1):从col_index列开局向右删除amount行,自动删除1列
from openpyxl import Workbookload_workbook
wb  load_workbook"测试1.xlsx"ws  wbactive
wsinsert_rows12     # 在第一行前拔出两行delete_col_index  13    # 删除1、3两列"""为防止删除多列时前面列对前面列发生影响,采取从前面列往前面列删的战略,行同理"""delete_col_indexsortreverseTrue     # 从大到小排序for col_index in delete_col_indexwsdelete_colscol_index
wbsaver'测试7.xlsx'

拔出和失掉图片

拔出图片

  • ws. add_img (img,“坐标”):减少图片到指定单元格位置
from openpyxl import Workbookfrom openpyxldrawingimage import Image
wb  Workbook
ws  wbactive
img  Image'logo.png'     # 关上图片imgwidthimgheight  8080    # 设置图片宽、高wsadd_imageimg 'A1'wbsave'logo.xlsx'

失掉图片

  • ws. _images :失掉以后上班表的图片列表
from openpyxl import load_workbookfrom PIL import Image as PILImage
wb  load_workbookr'logo.xlsx'ws  wbactivefor img in ws_images     img  PILImageopenimgref   # 失掉图片对象imgsaver'logo.{}'formatimgformat     # 保管图片到指定位置"""失掉多张图片"""for indeximg in enumeratews_imagesimg  PILImageopenimgref   # 失掉图片对象imgsaver'图片{}.{}'formatindex1imgformat     # 保管图片到指定位置

综合写入通常

写入后的成果如下:

# coding=utf-8from openpyxl import Workbookfrom openpyxlstyles import Font Border Side Alignment PatternFill
wb  Workbook
ws  wbactive"""设置全局样式"""border  BorderbottomSidestyle'thin' color'000000'rightSidestyle'thin' color'000000'leftSidestyle'thin' color'000000'topSidestyle'thin' color'000000'alignment  Alignmenthorizontal'center' vertical'center'row_index  1 # 写入的行索引,每写入一行后+1"""写入题目"""title  '姓名' '学号' '分数'for indexitem in enumeratetitlecell  wscellrow_indexindex1itemcellborder  bordercellalignment  alignmentcellfont  FontboldTruerow_index  1>= '张三' "1101" 17'李四' "3412" 18'王五' "1103" 16"""写入注释"""for row in>:for indexitem in enumeraterowcell  wscellrow_index index  1 itemcellborder  bordercellalignment  alignmentrow_index  1"""写入结果"""result   "算计" 171816for indexitem in enumerateresultcell  wscellrow_indexindex1itemcellborder  bordercellalignment  alignmentcellfill  PatternFillfill_type'solid' start_color"FFFF00"wbsaver"在校生信息表.xlsx"

兼并表格

# coding=utf-8from openpyxl import Workbookload_workbookimport os
dir_path  "在校生名单"  # 要兼并文件的文件夹地址"""读取文件夹下的一切excel文件"""files  
for file in oslistdirdir_path # 失掉以后目录下的一切文件filesappendospathjoindir_pathfile # 失掉文件夹+文件名的完整门路"""以第一个文件为基本表"""merge_excel  load_workbookfiles0merge_sheet  merge_excelactive"""遍历残余文件,追加到基本表"""for file in files1wb  load_workbookfilews  wbactivefor row in listwsvalues1  # 从第二行开局读取每一行并追加到基本表merge_sheetappendrow
merge_excelsave"高一在校生汇总.xlsx"

拆分表格

# coding=utf-8from openpyxl import Workbookload_workbookimport os
file_path  "高一在校生汇总.xlsx" # 要拆分的文件地址split_dir  "拆分结果"  # 拆分文件后保管的文件夹group_item  "班级"     # 拆分的依据字段"""关上拆分的excel文件并读取题目"""wb  load_workbookfile_path
ws  wbactive
title  
for cell in ws1titleappendcellvalue"""开局分组,分组结果保管到字典,键为班级名,值为班级在校生列表"""group_result    # 存储分组结果group_index  titleindexgroup_item    # 失掉拆分依据字段的索引for row in listwsvalues1class_name  rowgroup_index # 失掉分组依据数据,即班级名if class_name in group_result    # 假设分组存在就追加,不存在就新建group_resultclass_nameappendrowelsegroup_resultclass_name  row"""创立输入文件夹"""if not ospathexistssplit_dir   # 假设不存在文件夹就新建osmkdirsplit_dir
oschdirsplit_dir     # 进入拆分文件夹"""打印并输入分组后的数据"""for class_namestudents in group_resultitemsnew_wb  Workbook     # 新建excelnew_ws  new_wbactivenew_wsappendtitle    # 追加题目for student in studentsnew_wsappendstudent  # 讲分组数组追加到新excel中new_wbsave"{}.xlsx"formatclass_name

作业提交状况检测

# encoding: utf-8import osfrom openpyxl import Workbook load_workbook
excel_path  r"在校生名单/高一1班.xlsx"    # excel文件门路job_path  r"作业"     # 作业文件夹门路"""失掉姓名列表"""wb  load_workbookexcel_path
ws  wbactive
names  
for cell in ws"C"1# 失掉第C列第2行开局的数据namesappendcellvalue"""失掉作业列表"""oschdirjob_path  # 切换到作业目录files      # 失掉文件列表for file in oslistdirfilesappendospathsplitextfile0"""作业检测"""yesno  
for name in names     # 一一姓名判别if name in files   # 判别姓名能否在文件列表中yesappendname    # 假设在,减少到已成功名单elsenoappendname     # 否则,减少到未成功名单print"已成功人数:{},已成功名单:{}"formatlenyesyesprint"未成功人数:{},未成功名单:{}"formatlennono

版权说明
文章采用: 《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权。
客服邮箱:kefu@itcaiji.cn
版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!

-- 展开阅读全文 --
使用分别编译方法时 (] 分别编译 非类型模板参数 特化 [C 模板进阶)
« 上一篇
python代码大全 (Python ttk.ComboBox tkinter控件选集之组合选用框)
下一篇 »
为了防止灌水评论,登录后即可评论!

热门文章

1
2
什么是高防CDN
4
推特计划推出点对点支付功能
5
p5.js 3D图形-立方体

标签