赞
踩
Python3操作文件系列(一):判断文件|目录是否存在三种方式
Python3操作文件系列(二):文件数据读写|二进制数据读写
Python操作Excel的三大对象认知升维:
Excel对象模型:
excel脚本编程的主要内容包括脚本编程和Excel对象模型两大部分。对应脚本语言,它提供了一个叙事和交流的平台。
而对象模型,提供了与应用程序图形用户界面相关的对象,这些对象提供了属性及方法等接口,通过它们,可以用脚本语言向这些对象编程,
从而通过编程控制程序;
Excel图形用户界面中的对话框或界面元素被抽象为Excel对象。在OpenPyXL中:
(1)Excel工作簿被抽象为Workbook对象
(2)工作表被抽象为Worksheet对象
(3)单元格被抽象为Cell对象
这三个对象称为OpenPyXL的三大对象,还有表示图标的Chart对象等。所有Excel对象组合在一起,构成了Excel对象模型;
OpenPyXL的三大对象有着简单的包含关系;工作簿对象包含工作表对象,工作表对象包含单元格对象。所以在使用OpenPyxl进行编程时,Workbook对象,Worksheet对象和
Cell对象有着对应的层级应用关系
openpyxl操作excel文件,实现数据分析与挖掘与智能化办公|数据可视化直观图等
- import os
- import pathlib
-
- from openpyxl import Workbook
-
- '''
- openpyxl操作excel文件尝鲜
- '''
- excelPath = os.getcwd()
- print("创建操作excel文件对象workbook")
- # 创建工作簿
- wb = Workbook()
- # 创建表单页
- ws = wb.create_sheet()
- ws['A1'] = '数量'
- ws['B1'] = '重量'
- ws['C1'] = '长度'
- ws.append([10, 200, 30])
- ws.append([100, 80, 90])
- ws.append([10, 500, 60])
- ws.append([20, 400, 80])
- ws.append([30, 540, 80])
- ws.append([10, 500, 30])
- ws.append([50, 600, 10])
- ws.append([90, 800, 60])
- ws.append([10, 500, 30])
- ws.append([50, 600, 10])
- ws.append([90, 800, 60])
- ws.append([10, 500, 30])
- ws.append([50, 600, 10])
- ws.append([90, 800, 60])
- try:
- path = pathlib.Path(excelPath + "\\data\\test.xlsx")
- print("path是否存在: ", path.exists())
- if path.exists():
- print("如果excel中对应单元格有数据,数据将会被覆盖")
- wb.save(r"" + excelPath + "\\data\\test.xlsx")
- print(
- "------------------也可设置工作簿对象的template属性值为True,可以将当前工作簿保存为模版,模版文件的拓展名为xltx")
- wb.template = True
- wb.save(excelPath + "\\data\\temp.xltx")
- else:
- with open(excelPath + "\\data\\test.xlsx", 'w') as f:
- print("文件创建成功!")
- except FileNotFoundError as err:
- print("系统异常: ", err)
- finally:
- print("释放资源")
- wb.close()
运行效果:
- import os
- import pathlib
- from openpyxl import load_workbook
-
- '''
- Python操作Excel的三大对象认知升维:
- Excel对象模型:
- excel脚本编程的主要内容包括脚本编程和Excel对象模型两大部分。对应脚本语言,它提供了一个叙事和交流的平台。
- 而对象模型,提供了与应用程序图形用户界面相关的对象,这些对象提供了属性及方法等接口,通过它们,可以用脚本语言向这些对象编程,
- 从而通过编程控制程序;
- Excel图形用户界面中的对话框或界面元素被抽象为Excel对象。在OpenPyXL中:
- (1)Excel工作簿被抽象为Workbook对象
- (2)工作表被抽象为Worksheet对象
- (3)单元格被抽象为Cell对象
- 这三个对象称为OpenPyXL的三大对象,还有表示图标的Chart对象等。所有Excel对象组合在一起,构成了Excel对象模型;
- OpenPyXL的三大对象有着简单的包含关系;工作簿对象包含工作表对象,工作表对象包含单元格对象。所以在使用OpenPyxl进行编程时,Workbook对象,Worksheet对象和
- Cell对象有着对应的层级应用关系
- '''
-
- print("使用load_workbook()函数加载已经存在的工作簿文件")
- excelPath = os.getcwd()
- try:
- path = pathlib.Path(excelPath + "\\data\\test01.xlsx")
- if path.exists():
- print("创建工作簿对象")
- print("通过这种方式创建的workbook没有返回值,使用with语句会报错:")
- print("'Workbook' object does not support the context manager protocol")
- print("绝对路径:", path.absolute())
- wb = load_workbook(path.absolute(), False, True, False, True)
- print("创建工作表对象")
- """
- title为工作表标题
- index为该工作表的索引位置,0表示放置最前面
- 当index为负数时,表示从后往前编号,-1表示在倒数第二个位置插入新工作表
- """
- ws = wb.create_sheet(title="国家统计局GDP入表数据", index=0)
- print("表格的标题:%s" % ws.title)
- ws1 = wb.create_sheet(title="MySheet")
- print(ws1.title)
- # 删除工作表单
- del wb[ws1.title]
-
- ws2 = wb.create_sheet(title="2023年汽车销售量")
- ws3 = wb.create_sheet(title="MySheet3")
- print("管理工作表单")
- print("获取所有的表单对象")
- sheets = wb.worksheets
- for sheet in sheets:
- print("工作簿中表单: ", sheet)
- print()
- print("更改MySheet3的名称为'2022年北京市就业统计'")
- sheets[1].title = '2021年北京市失业人数汇总'
- sheets[3].title = '2022年北京市就业统计'
- for sheet in sheets:
- print("修改后工作簿中表单: ", sheet)
- print("工作簿中有多少个工作表单: %d (张)" % len(sheets))
- # 删除工作表单
- # wb.remove(ws1)
- print("------------------------------------------------")
- print("引用工作表单")
- sheetList = wb.worksheets
- print("通过索引引用工作表单:", sheetList[0].title)
- print("通过索引引用工作表单:", sheetList[1].title)
- print("使用名称引用工作表单:", wb['2023年汽车销售量'])
- print("使用工作簿的get_sheet_by_name()函数引用表单:", wb.get_sheet_by_name(['2021年北京市失业人数汇总']))
-
- print('-----------------------------------------------------------------------')
- """
- 对应不知道表单的名字,可以使用工作簿的sheetnames属性获取所有的工作表单名称
- 然后使用表单名称引用表单
- """
- sheetNameList = wb.sheetnames
- for name in sheetNameList:
- print("工作簿中的表单:", name)
-
- else:
- print(path, ",文件不存在,请手动创建一个")
- except Exception as err:
- print("系统异常: ", err)
运行效果:
D:\program_file_worker\anaconda\python.exe D:\program_file_worker\python_source_work\SSO\grammar\file\excel\ExcelFileReadWriteByPyXlRelation.py
使用load_workbook()函数加载已经存在的工作簿文件
创建工作簿对象
通过这种方式创建的workbook没有返回值,使用with语句会报错:
'Workbook' object does not support the context manager protocol
绝对路径: D:\program_file_worker\python_source_work\SSO\grammar\file\excel\data\test01.xlsx
创建工作表对象
表格的标题:国家统计局GDP入表数据
MySheet
管理工作表单
获取所有的表单对象
工作簿中表单: <Worksheet "国家统计局GDP入表数据">
工作簿中表单: <Worksheet "Sheet1">
工作簿中表单: <Worksheet "2023年汽车销售量">
工作簿中表单: <Worksheet "MySheet3">更改MySheet3的名称为'2022年北京市就业统计'
修改后工作簿中表单: <Worksheet "国家统计局GDP入表数据">
修改后工作簿中表单: <Worksheet "2021年北京市失业人数汇总">
修改后工作簿中表单: <Worksheet "2023年汽车销售量">
修改后工作簿中表单: <Worksheet "2022年北京市就业统计">
工作簿中有多少个工作表单: 4 (张)
------------------------------------------------
引用工作表单
通过索引引用工作表单: 国家统计局GDP入表数据
通过索引引用工作表单: 2021年北京市失业人数汇总
使用名称引用工作表单: <Worksheet "2023年汽车销售量">
系统异常: "Worksheet ['2021年北京市失业人数汇总'] does not exist."
D:\program_file_worker\python_source_work\SSO\grammar\file\excel\ExcelFileReadWriteByPyXlRelation.py:65: DeprecationWarning: Call to deprecated function get_sheet_by_name (Use wb[sheetname]).
print("使用工作簿的get_sheet_by_name()函数引用表单:", wb.get_sheet_by_name(['2021年北京市失业人数汇总']))Process finished with exit code 0
红色部分报错:
获取工作表时,使用了get_sheet_by_name()方法,或报错:
解决方案一: Use wb[sheetname] 及这样取值:wb['2023年汽车销售量']
解决方案二:
import warnings
warnings.filterwarnings("ignore")
再次运行效果:
D:\program_file_worker\anaconda\python.exe D:\program_file_worker\python_source_work\SSO\grammar\file\excel\ExcelFileReadWriteByPyXlRelation.py 使用load_workbook()函数加载已经存在的工作簿文件 创建工作簿对象 通过这种方式创建的workbook没有返回值,使用with语句会报错: 'Workbook' object does not support the context manager protocol 绝对路径: D:\program_file_worker\python_source_work\SSO\grammar\file\excel\data\test01.xlsx 创建工作表对象 表格的标题:国家统计局GDP入表数据 MySheet 管理工作表单 获取所有的表单对象 工作簿中表单: <Worksheet "国家统计局GDP入表数据"> 工作簿中表单: <Worksheet "Sheet1"> 工作簿中表单: <Worksheet "2023年汽车销售量"> 工作簿中表单: <Worksheet "MySheet3"> 更改MySheet3的名称为'2022年北京市就业统计' 修改后工作簿中表单: <Worksheet "国家统计局GDP入表数据"> 修改后工作簿中表单: <Worksheet "2021年北京市失业人数汇总"> 修改后工作簿中表单: <Worksheet "2023年汽车销售量"> 修改后工作簿中表单: <Worksheet "2022年北京市就业统计"> 工作簿中有多少个工作表单: 4 (张) ------------------------------------------------ 引用工作表单 通过索引引用工作表单: 国家统计局GDP入表数据 通过索引引用工作表单: 2021年北京市失业人数汇总 使用名称引用工作表单: <Worksheet "2023年汽车销售量"> 使用工作簿的get_sheet_by_name()函数引用表单: <Worksheet "2021年北京市失业人数汇总"> ----------------------------------------------------------------------- 工作簿中的表单: 国家统计局GDP入表数据 工作簿中的表单: 2021年北京市失业人数汇总 工作簿中的表单: 2023年汽车销售量 工作簿中的表单: 2022年北京市就业统计 Process finished with exit code 0
- import os
- import pathlib
- from openpyxl import Workbook
-
- '''
- Python操作Excel的三大对象认知升维:
-
- '''
- workBook = Workbook()
- print("使用Workbook对象相应方法操作工作表单")
- excelPath = os.getcwd()
-
- try:
- path = pathlib.Path(excelPath + "\\data\\test02.xlsx")
- if path.exists():
- print("激活当前工作表单")
- workSheet = workBook.active
- workSheet.title = '第一个sheet表单'
- # 赋值当前工作表单
- print("赋值工作表单:")
- new_copy_sheet = workBook.copy_worksheet(workSheet)
- new_copy_sheet.title = '第二个sheet表单'
- last_new_copy_sheet = workBook.copy_worksheet(workSheet)
- print('修改表单的名称')
- last_new_copy_sheet.title = '第三个sheet表单'
-
- print("复制工作表单完成")
- print()
- print('-----------------移动工作表单-------------------------------')
- print(
- "把第一个sheet表单移动到第3个索引位置;move_sheet()offset为整数,则移动向右移动数字的索引位置,如果为负数,则向左一定")
- workBook.move_sheet(workSheet, 3)
- workBook.move_sheet(workSheet, -1)
- print("在表单中新增行|列")
- workSheet.append([10, 20, 30])
- workSheet.append(['老杨', 80, 1023])
- print("添加两行字典")
- workSheet.append({'A': '李广', "B": "徐佳莹", "C": "89"})
- workSheet.append({1: '李广00', 2: "徐佳莹00", 3: "8900"})
-
- print('---------------------使用循环添加数据------------------------')
- for row in range(1, 10):
- workSheet.append(range(10, 20))
-
- print('------------------获取行/列或者多行/多列------------------')
- print("""
- 获取行和列,即引用行和列。使用引用行号引用行,使用列对应的字母引用列;
- 如下: 获取10行和第3列
- """)
- row10 = workSheet[10] # 返回的是元组
- print("第10组(元组)数据:", row10)
- colC = workSheet['C']
- print("第3列(元组)数据:", colC)
- for item in row10:
- print("第10行数据: ", item.value)
- print()
- print('-----------------------------------------------')
- for item in colC:
- print("第三列数据:", item.value)
- print("------------------------------------------------")
- print("使用嵌套的for循环变量第1-3行,并输出个单元格中的数据")
- for row in workSheet["1:3"]:
- for col in row:
- print("1-3行每个单元格的数据: ", col.value)
- print()
- print('使用嵌套的for循环变量1-3列,并输出个单元格中的数据')
- for column in workSheet["A:C"]:
- for cell in column:
- print("1-3列每个单元格的数据: ", cell.value)
- print()
- print('---------------------了解下工作表对象的其他数据和方法---------------------------------')
- print("工作表格的标题: ", workSheet.title)
- print("工作表格的可见状态: ", workSheet.sheet_state)
- print("表格中含有数据的部分的大小:", workSheet.dimensions)
- print("工作表格相关属性:", workSheet.sheet_properties)
- print()
- print("设置选项卡标签处的背景色")
- workSheet.sheet_properties.tabColor = 'FF5500'
- print("活动单元格: ", workSheet.active_cell)
- print("选中的单元格: ", workSheet.selected_cell)
- print("----------------------获取第一列列的1,2,3单元格的值------------------")
- print("A1数据:", workSheet['A1'].value)
- print("A2数据:", workSheet['A2'].value)
- print("A3数据:", workSheet['A3'].value)
- print("----------------------获取第二列的1,2,3单元格的值------------------")
- print("B1数据:", workSheet['B1'].value)
- print("B2数据:", workSheet['B2'].value)
- print("B3数据:", workSheet['B3'].value)
- print("----------------------获取第三列的1,2,3单元格的值------------------")
- print("C1数据:", workSheet['C1'])
- print("C2数据:", workSheet['C2'])
- print("C3数据:", workSheet['C3'])
- print("--------------------------变量某个区域(A1:C3)块的数据--------------------")
- data = []
- for row in workSheet['A1:C3']:
- rv = []
- for cell in row:
- rv.append(cell.value) # rv列表存放的是每一行的数据
- data.append(rv) # 每一列作为外层列表的一个元素
- print("data: ", data)
- print()
- i = 0
- for line in data:
- i += 1
- print(" 第 %d 行数据: " % i, line)
- workBook.save(path)
- else:
- with open(excelPath + "\\data\\test02.xlsx", 'w') as f:
- print("文件创建成功!")
- except FileNotFoundError as err:
- print("系统异常: ", err)
- finally:
- print()
- print("释放资源")
- workBook.close()
运行效果:
D:\program_file_worker\anaconda\python.exe D:\program_file_worker\python_source_work\SSO\grammar\file\excel\ExcelFileReadWriteByPyXlRelationMoveCopyRowColumns.py
使用Workbook对象相应方法操作工作表单
激活当前工作表单
赋值工作表单:
修改表单的名称
复制工作表单完成-----------------移动工作表单-------------------------------
把第一个sheet表单移动到第3个索引位置;move_sheet()offset为整数,则移动向右移动数字的索引位置,如果为负数,则向左一定
在表单中新增行|列
添加两行字典
---------------------使用循环添加数据------------------------
------------------获取行/列或者多行/多列------------------获取行和列,即引用行和列。使用引用行号引用行,使用列对应的字母引用列;
如下: 获取10行和第3列
第10组(元组)数据: (<Cell '第一个sheet表单'.A10>, <Cell '第一个sheet表单'.B10>, <Cell '第一个sheet表单'.C10>, <Cell '第一个sheet表单'.D10>, <Cell '第一个sheet表单'.E10>, <Cell '第一个sheet表单'.F10>, <Cell '第一个sheet表单'.G10>, <Cell '第一个sheet表单'.H10>, <Cell '第一个sheet表单'.I10>, <Cell '第一个sheet表单'.J10>)
第3列(元组)数据: (<Cell '第一个sheet表单'.C1>, <Cell '第一个sheet表单'.C2>, <Cell '第一个sheet表单'.C3>, <Cell '第一个sheet表单'.C4>, <Cell '第一个sheet表单'.C5>, <Cell '第一个sheet表单'.C6>, <Cell '第一个sheet表单'.C7>, <Cell '第一个sheet表单'.C8>, <Cell '第一个sheet表单'.C9>, <Cell '第一个sheet表单'.C10>, <Cell '第一个sheet表单'.C11>, <Cell '第一个sheet表单'.C12>, <Cell '第一个sheet表单'.C13>)
第10行数据: 10
第10行数据: 11
第10行数据: 12
第10行数据: 13
第10行数据: 14
第10行数据: 15
第10行数据: 16
第10行数据: 17
第10行数据: 18
第10行数据: 19-----------------------------------------------
第三列数据: 30
第三列数据: 1023
第三列数据: 89
第三列数据: 8900
第三列数据: 12
第三列数据: 12
第三列数据: 12
第三列数据: 12
第三列数据: 12
第三列数据: 12
第三列数据: 12
第三列数据: 12
第三列数据: 12
------------------------------------------------
使用嵌套的for循环变量第1-3行,并输出个单元格中的数据
1-3行每个单元格的数据: 10
1-3行每个单元格的数据: 20
1-3行每个单元格的数据: 30
1-3行每个单元格的数据: None
1-3行每个单元格的数据: None
1-3行每个单元格的数据: None
1-3行每个单元格的数据: None
1-3行每个单元格的数据: None
1-3行每个单元格的数据: None
1-3行每个单元格的数据: None
1-3行每个单元格的数据: 老杨
1-3行每个单元格的数据: 80
1-3行每个单元格的数据: 1023
1-3行每个单元格的数据: None
1-3行每个单元格的数据: None
1-3行每个单元格的数据: None
1-3行每个单元格的数据: None
1-3行每个单元格的数据: None
1-3行每个单元格的数据: None
1-3行每个单元格的数据: None
1-3行每个单元格的数据: 李广
1-3行每个单元格的数据: 徐佳莹
1-3行每个单元格的数据: 89
1-3行每个单元格的数据: None
1-3行每个单元格的数据: None
1-3行每个单元格的数据: None
1-3行每个单元格的数据: None
1-3行每个单元格的数据: None
1-3行每个单元格的数据: None
1-3行每个单元格的数据: None使用嵌套的for循环变量1-3列,并输出个单元格中的数据
1-3列每个单元格的数据: 10
1-3列每个单元格的数据: 老杨
1-3列每个单元格的数据: 李广
1-3列每个单元格的数据: 李广00
1-3列每个单元格的数据: 10
1-3列每个单元格的数据: 10
1-3列每个单元格的数据: 10
1-3列每个单元格的数据: 10
1-3列每个单元格的数据: 10
1-3列每个单元格的数据: 10
1-3列每个单元格的数据: 10
1-3列每个单元格的数据: 10
1-3列每个单元格的数据: 10
1-3列每个单元格的数据: 20
1-3列每个单元格的数据: 80
1-3列每个单元格的数据: 徐佳莹
1-3列每个单元格的数据: 徐佳莹00
1-3列每个单元格的数据: 11
1-3列每个单元格的数据: 11
1-3列每个单元格的数据: 11
1-3列每个单元格的数据: 11
1-3列每个单元格的数据: 11
1-3列每个单元格的数据: 11
1-3列每个单元格的数据: 11
1-3列每个单元格的数据: 11
1-3列每个单元格的数据: 11
1-3列每个单元格的数据: 30
1-3列每个单元格的数据: 1023
1-3列每个单元格的数据: 89
1-3列每个单元格的数据: 8900
1-3列每个单元格的数据: 12
1-3列每个单元格的数据: 12
1-3列每个单元格的数据: 12
1-3列每个单元格的数据: 12
1-3列每个单元格的数据: 12
1-3列每个单元格的数据: 12
1-3列每个单元格的数据: 12
1-3列每个单元格的数据: 12
1-3列每个单元格的数据: 12---------------------了解下工作表对象的其他数据和方法---------------------------------
工作表格的标题: 第一个sheet表单
工作表格的可见状态: visible
表格中含有数据的部分的大小: A1:J13
工作表格相关属性: <openpyxl.worksheet.properties.WorksheetProperties object>
Parameters:
codeName=None, enableFormatConditionsCalculation=None, filterMode=None, published=None, syncHorizontal=None, syncRef=None, syncVertical=None, transitionEvaluation=None, transitionEntry=None, tabColor=None, outlinePr=<openpyxl.worksheet.properties.Outline object>
Parameters:
applyStyles=None, summaryBelow=True, summaryRight=True, showOutlineSymbols=None, pageSetUpPr=<openpyxl.worksheet.properties.PageSetupProperties object>
Parameters:
autoPageBreaks=None, fitToPage=None设置选项卡标签处的背景色
活动单元格: A1
选中的单元格: A1
----------------------获取第一列列的1,2,3单元格的值------------------
A1数据: 10
A2数据: 老杨
A3数据: 李广
----------------------获取第二列的1,2,3单元格的值------------------
B1数据: 20
B2数据: 80
B3数据: 徐佳莹
----------------------获取第三列的1,2,3单元格的值------------------
C1数据: <Cell '第一个sheet表单'.C1>
C2数据: <Cell '第一个sheet表单'.C2>
C3数据: <Cell '第一个sheet表单'.C3>
--------------------------变量某个区域块的数据--------------------
data: [[10, 20, 30], ['老杨', 80, 1023], ['李广', '徐佳莹', '89']]第 1 行数据: [10, 20, 30]
第 2 行数据: ['老杨', 80, 1023]
第 3 行数据: ['李广', '徐佳莹', '89']释放资源
Process finished with exit code 0
- import os
- import pathlib
- from openpyxl import Workbook
- from openpyxl.drawing.image import Image
- from openpyxl.styles import Font, Side, Border
- from openpyxl.styles import PatternFill, GradientFill
-
- '''
- Python操作Excel的单元格对象操作:
- 单元格取值,修改,设置背景,设置字体,合并单元格,设置边框等
- '''
- workbook = Workbook()
- print("使用Workbook对象相应方法操作工作表单")
- excelPath = os.getcwd()
- try:
- path = pathlib.Path(excelPath + "\\data\\test002.xlsx")
- if path.exists():
- # 创建工作表单
- sheet = workbook.active
- # 修改默认的标题
- sheet.title = '销售数据统计表'
- print("引用单元格的区域(C3:E8),并插入下面的data列表数据至指定的区域")
- print("""
- Font(
- name=字体名称,
- size=字体大小,
- bold=是否加粗,
- italic=是否斜体,
- color=字体颜色)
- """)
- font = Font(name="微软雅黑", size=12, bold=True, italic=True, color="11993333")
- cellArea = sheet['C3:K8']
- data = [
- ['张大伟', 90, 665, 10, 20, 30, 40, 30, 10],
- ['孙权', 56, 665, 11, 20, 30, 430, 30, 20],
- ['白珊珊', 78, 5765, 10, 22, 30, 49, 40, 40],
- ['唐云', 65, 56, 10, 20, 60, 40, 50, 40],
- ['李广', 77, 56, 10, 26, 30, 10, 30, 20],
- ['孙琦', 65, 567, 10, 20, 38, 40, 50, 20]
- ]
- # 二维类别的下标从0开始,i表示外层元素的索引,j表示内层元素的索引
- i = -1
- for row in cellArea: # 遍历一块二维一块数据区域
- i += 1
- j = -1
- for cell in row: # 遍历区域的每一行
- j += 1
- # 给单元格赋值
- cell.value = data[i][j]
- # 设置单元格字体
- cell.font = font
- print("合并单元格操作")
- sheet.merge_cells('A1:B6')
- sheet.merge_cells('C9:K11')
-
- sheet.merge_cells('A8:B11')
- print("撤销合并操作,但是数据不能恢复")
- sheet.unmerge_cells('A8:B11')
-
- print('---------------------------设置背景样式-----------------------------')
- print()
- print("""
- PatternFill(
- fill_type=填充样式,
- fgColor=填充颜色)
- """)
- print("----------------------------设置单元格-------------------------------")
- sheet['A1'].fill = PatternFill(fill_type="solid", start_color="00FF00")
- fill = PatternFill(fill_type="lightGray", fgColor="0000FF")
- print("---------------------设置第二列样式-----------------------------------")
- sheet.column_dimensions['B'].fill = fill
-
- print('-----------------------------------设置边框-------------------------------------')
- print("""
- Side(style=边线样式,color=边线颜色)
- style 参数的种类:
- 'double',
- 'mediumDashDotDot',
- 'slantDashDot',
- 'dashDotDot',
- 'dotted',
- 'hair',
- 'mediumDashed',
- 'dashed',
- 'dashDot',
- 'thin',
- 'mediumDashDot',
- 'medium',
- 'thick'
- Border(left=左边线样式,right=右边线样式,top=上边线样式,bottom=下边线样式)
- """)
- cell = sheet["C16"]
- side1 = Side(style="thin", color="FF00FF")
- side2 = Side(style="thick", color="FFFF1100")
- border = Border(left=side1, right=side1, top=side2, bottom=side2)
- cell.border = border
- print('---------------------------插入图片-----------------------')
- img_path = r"./images/白珊珊.png"
- img = Image(img_path)
- # 将图片添加到A1单元格
- sheet.add_image(img, "C9")
- # 提交表单,让修改生效
- workbook.save(path)
- else:
- with open(excelPath + "\\data\\test002.xlsx", 'w') as f:
- print("文件创建成功!")
- except FileNotFoundError as err:
- print("系统异常: ", err)
- finally:
- print()
- print("释放资源")
- workbook.close()
运行效果:
![]()
D:\program_file_worker\anaconda\python.exe D:\program_file_worker\python_source_work\SSO\grammar\file\excel\ExcelFileReadWriteByPyXlRelationRowColumns.py
使用Workbook对象相应方法操作工作表单
引用单元格的区域(C3:E8),并插入下面的data列表数据至指定的区域Font(
name=字体名称,
size=字体大小,
bold=是否加粗,
italic=是否斜体,
color=字体颜色)
合并单元格操作
撤销合并操作,但是数据不能恢复
---------------------------设置背景样式-----------------------------
PatternFill(
fill_type=填充样式,
fgColor=填充颜色)
----------------------------设置单元格-------------------------------
---------------------设置第二列样式-----------------------------------
-----------------------------------设置边框-------------------------------------Side(style=边线样式,color=边线颜色)
style 参数的种类:
'double',
'mediumDashDotDot',
'slantDashDot',
'dashDotDot',
'dotted',
'hair',
'mediumDashed',
'dashed',
'dashDot',
'thin',
'mediumDashDot',
'medium',
'thick'
Border(left=左边线样式,right=右边线样式,top=上边线样式,bottom=下边线样式)
---------------------------插入图片-----------------------释放资源
Process finished with exit code 0
忙着去耍帅,后期补充完整
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。