excel自动办公-模块openpyxl学习笔记

#安装模块(在cmd中运行如下命令)
#出现 Successfully installed 安装成功
#pip install openpyxl

import openpyxl
#总的思路,该模块有工作簿对象、工作表对象、范围单元格、单元格对象。所有操作可以对这四类进行操作。

zm = r"D:\360MoveData\Users\Administrator\Desktop\\"
#zm = r"C:\Users\Administrator\Desktop\\"

wb = openpyxl.Workbook()#创建一个工作簿
wb2 = openpyxl.load_workbook(zm+"文件名称.xlsx",data_only=True)#打开已存在的工作簿;ata_only公式显示值。(有问题)
print(wb2.sheetnames)#显示所有工作表名

ws = wb2.active#激活默认打开时的工作表
ws = wb2["Sheet1"]#激活指定工作表,表名作为key进行索引。
wb2.copy_worksheet(ws) #复制激活的工作表的副本

ws = wb2.create_sheet("Mysheet", 0)#创建一个工作表,位置为0
wb2.remove_sheet(ws)#删除工作表,只能为工作表对象。

ws.title='CCCCC'#更改工作表名
ws.sheet_properties.tabColor="1072BA" #设置工作表标题的背景色

ws["A1"] = "aaaaaaaaaaa"#对指定单元格进行赋值
ws.cell(row=10,column=10,value='AAAAAAA')#对第十行第十列赋值(可用在循环赋值)
ws.append([1,2,3,4,5,6,7])#从非空行开始赋值
ws.append({
     'A':'This is A1','C':'This is C1'})#从非空行开始赋值
ws.append({
     5:'This is A1',7:'This is C1'})#从非空行开始赋值
ws["A1"] = "=SUM(B1:C1)"#对指定单元格输入公式。

print(ws["A1"].value)#访问某个单元格内容,同时也可以通过[单元格对象].value=" "进行赋值
print(ws.cell(row=1,column=2).value) #访问某个单元格内容

a = ws["A1":"B6"]#[范围选择]通过切片访问某个区域,再通过for循环可以读出数据,也可以进行赋值。
for i in a:
    print(i[0].value)#当前i的是一个列表,可以通过下标索引访问某个元素(单元格)的值。
    for j in i:
        print(j.value)
        j.value = "123"#进行赋值
        print(j.row,j.column,j.coordinate)#通过单元格对象,取行、列、坐标                

aa = ws.iter_cols(min_col=2, max_col=7, min_row=2, max_row=6,values_only=True)#取第二行到第七行,第二列到第6列。values_only只取出单元格值
for i in aa:
    print(i)

a = ws["A"]#取出A列中所有数据
for i in a:
    print(i.value)

a = ws["C:E"]#取出C到E列
for i in a:
    print(i)
    for j in i:
        print(j,j.value)

a = ws[1]#取出第1行
for i in a:
    print(i.value)

a = ws[1:3]#取出1到3行
for i in a:
    for j in i:
        print(j.value)

a = ws.rows#取出表中所有数据
for i in a:
    for j in i:
        print(j.value,end=" ")
    print()

a = ws["B2"]
a.offset(2,0)#在单元格对象的位置上进行坐标偏移。

# 获得最大列和最大行
print(ws.max_row)
print(ws.max_column)

ws.row_dimensions[2].height = 100 #设置第2行高度
ws.column_dimensions["A"].width =50 #设置第A列宽度

ws.merge_cells("A3:B5")#合并单元格A3至B5,单元格名为A3
ws.unmerge_cells("A3:B5")#拆分单元格。怎么合的就要怎么拆。

print(openpyxl.utils.get_column_letter(108))  #根据列的数字返回字母DD列
print(openpyxl.utils.column_index_from_string('DD'))  #根据字母返回列的数字108列

ws.freeze_panes = "C5" #冻结C5左边和上面的单元格。如果要取消就设置为"A1"


#样式设置-----------------------------------------------------------开始
ws["B6"]="ABCD"
ws["B8"]="哈哈哈"
from openpyxl.styles import Font#字体设置
ws["B6"].font = Font(name="黑体",size=16,bold=True,underline="double",italic=True,strike=False,color="FF0000") 
#字体,字号,加粗,下划线(single单下划;double双),倾斜,删除线,颜色

from openpyxl.styles import PatternFill#纯色背景填充
ws["B6"].fill = PatternFill(fill_type="solid",fgColor="FFFF00")#填充背景模式:纯色;颜色:黄色;

from openpyxl.styles import GradientFill#渐变背景填充
ws["B8"].fill = GradientFill(type="linear",stop=("FF00FF","00FF00"))#填充背景模式:渐变;颜色黄色到绿色;

from openpyxl.styles import Border, Side#边框线条设置
XT = Side(border_style="thick",color="FF00FF")#线条类型和颜色
ws["D10"].border = Border(top=XT,bottom=XT,left=XT,right=XT)#设置边框上下左右的线条
# border_style参数:'thick粗线', 'thin细线','dotted虚线','double双单''dashDot','dashDotDot', 'dashed',
# 'hair', 'medium', 'mediumDashDot', 'mediumDashDotDot','mediumDashed', 'slantDashDot', 

from openpyxl.styles import Alignment#文本对齐
ws["B6"].alignment = Alignment(horizontal="general",vertical="distributed",wrapText=True,textRotation="0")#水平和垂直对齐方式、自动换行、旋转角度
# 水平horizontal:"general", "left", "center", "right", "fill", "justify", "centerContinuous","distributed", )
# 垂直vertical:"top", "center", "bottom", "justify", "distributed"   【对应excel中对齐设置的顺序】


from openpyxl.styles import NamedStyle#设置好字体,对齐,边框等样式供调用
Yang = NamedStyle(name="name1")
Yang.font=Font(name="黑体",size=25,color="000000")
Yang.fill=PatternFill(fill_type="solid",fgColor="FFFFFF")
XT = Side(border_style="double",color="FF00FF")
Yang.border=Border(top=XT,bottom=XT,left=XT,right=XT)
Yang.alignment = Alignment(horizontal="center",vertical="center")#设置结束

ws["B13"].style ="name1"#对单元格添加样式
#样式设置-----------------------------------------------------------结束

#单元格数字文本格式设置-----------------------------------------------开始
import datetime#时间模块
ws["D13"] = datetime.datetime.today()
ws["D13"].number_format = "yyyy年mm月dd日hh时mm分ss秒"
ws["D12"].number_format = "#,###.00元整"
ws["D14"].number_format="+#,##0;-#,##0"#正负两种情况下的不同显示,也可加颜色。
ws["D15"].number_format="[=1]男;[=2]女"#为1显示男;为2显示女;也可以用大于小来做判断。
#单元格数字文本格式设置-----------------------------------------------结束



wb2.save(zm+"文件名称.xlsx")#保存文件到指定目录。覆盖同名文件,而不会有任何警告
wb2.close()#关闭文件


#https://www.bilibili.com/video/av23697305/?spm_id_from=333.788.b_636f6d6d656e74.17

你可能感兴趣的:(学习笔记,python,excel)