小尹学python

导航

Python:Excel改写内容

# excel读取注意点:如果是合并单元格,那么读取的是第一个位置,如A1:B2合并,那么读取的应该是A1数值
# 改写Excel内容和格式

from openpyxl import load_workbook
from openpyxl import workbook
from openpyxl.styles import Alignment, Border, Side, Font, PatternFill, GradientFill  # 对齐、边框、边线或对角线、字体、填充颜色、渐变色

#  一、原文件基础上修改
work_book  = load_workbook(r'D:\xxx\2018年台州常住人口和城镇化率情况.xlsx')  # 打开Excel文件
sheet = work_book.worksheets[0]  # 锁定工作表
cell = sheet.cell(1,1)  # 锁定单元格
cell.value = '示例额'  # 修改单元格值
work_book.save(r'D:\xxx\2019年台州常住人口和城镇化率情况.xlsx')  # 保存修改后内容,文件名是新的则重新创建,如是原来的,则覆盖

#  二、创建新文件并写入内容
work_book_01 = workbook.Workbook()    # 创建新文件
sheet_01 = work_book_01.worksheets[0]    # 在文件下创建新的工作表sheet
cell_01 = sheet_01.cell(1,1)     # 锁定当前sheet下的单元格
cell_01.value = '举个例子'  # 填入内容
work_book_01.save('案例文件.xlsx')  # 保存

#  三、其他功能
work_book_02 = workbook.Workbook()  # 创建新文件

#  1、修改sheet名称
sheet_02 = work_book_02.worksheets[0]    # 在文件下创建新的工作表sheet
sheet_02.title = '房产数据'    # 为sheet命名
work_book_02.save('fdc.xlsx')  # 保存

#  2、创建sheet并修改sheet颜色
sheet_03 = work_book_02.create_sheet('其他数据',0)   # 在文件下创建新的工作表并赋予其位置和名字
sheet_03.sheet_properties.tabColor = 'ffcc66'   # 为sheet填充颜色
work_book_02.save('fdc_02.xlsx') # 保存

#  3、默认打开的sheet
work_book_02.active = 0
work_book_02.save('fdc_01.xlsx')

#  4、拷贝sheet
new_sheet = work_book_02.copy_worksheet(work_book_02['Sheet'])  # 复制一开始创建的sheet
new_sheet.title = '新数据'  # 为sheet命名
work_book_02.save('fdc_04.xlsx')

#  5、删除sheet
del work_book_02['Sheet']
work_book_02.save('fdc_05.xlsx')

#  5、修改单元格值
work_book_03 = load_workbook('2019年台州常住人口和城镇化率情况.xlsx')
sheet_04 = work_book_03.worksheets[0]
#  方法一
cell_04 = sheet_04.cell(1, 1)
cell_04.value = '新的示例'
work_book_03.save('2019年台州常住人口和城镇化率情况.xlsx')
#  方法二
sheet_04['B3'] = '888'
work_book_03.save('2020年台州常住人口和城镇化率情况.xlsx')  # 文件打开的情况下,不可修改保存覆盖
#  方法三:修改部分单元格的值1
cell_list = sheet_04['B2':'D4']
for row in cell_list:
    for cell in row:
        cell.value = '新内容'
work_book_03.save('2020年台州常住人口和城镇化率情况.xlsx')
#  方法四:修改部分单元格的值2
for row in sheet_04.iter_rows(min_row=2,min_col=3,max_row=4,max_col=6):
    for cell in row:
        cell.value = '更新的内容'
work_book_03.save('2020年台州常住人口和城镇化率情况.xlsx')

#  6、对齐方式
cell = sheet_04.cell(3, 3)
# horizontal,水平方向对齐方式:"general", "left", "center", "right", "fill", "justify", "centerContinuous", "distributed"
# vertical,垂直方向对齐方式:"top", "center", "bottom", "justify", "distributed"
# text_rotation,旋转角度。
# wrap_text,是否自动换行。
cell.alignment = Alignment(horizontal='left', vertical='center', text_rotation='45', wrap_text=True)
work_book_03.save('2020年台州常住人口和城镇化率情况.xlsx')

#  7、边框
# side的style有如下:dashDot','dashDotDot', 'dashed','dotted','double','hair', 'medium',
# 'mediumDashDot', 'mediumDashDotDot','mediumDashed', 'slantDashDot', 'thick', 'thin'
cell_07 = sheet_04.cell(2, 5)
cell_07.border = Border(top=Side(style='thick', color='ccff99'),  # 上边框
                        bottom=Side(style='dashed', color='cc9966'),    # 下边框
                        left=Side(style='thick', color='999933'),    # 左边框
                        right=Side(style='dashed', color='663399'),    # 右边框
                        diagonal=Side(style='thick', color='660099'),    # 对角线
                        diagonalUp=True,    # 左下到右上对角线,True为有,False为无
                        diagonalDown=True)    # 左上到右下对角线,True为有,False为无
work_book_03.save('2020年台州常住人口和城镇化率情况.xlsx')

#  8、字体
cell_08 = sheet_04.cell(2,6)
cell_08.font = Font(name='新宋体',size='8',color='990000',underline='single')
work_book_03.save('2020年台州常住人口和城镇化率情况.xlsx')

#  9、背景色
cell_09 = sheet_04.cell(2,7)
cell_09.fill = PatternFill("solid",fgColor='33ff66')
work_book_03.save('2020年台州常住人口和城镇化率情况.xlsx')

#  10、渐变色
cell_10 = sheet_04.cell(2,8)
cell_10.fill = GradientFill("linear",stop=('66ffcc','9966cc','ff0066'))
work_book_03.save('2020年台州常住人口和城镇化率情况.xlsx')

#  11、宽高设置
sheet_04.row_dimensions[1].height = 50
sheet_04.column_dimensions["E"].width = 20
work_book_03.save('2020年台州常住人口和城镇化率情况.xlsx')

#  12、合并单元格
sheet_04.merged_cells('G3:H5')  # 方法一
sheet_04.merged_cells(start_row=15,start_colum=3,end_row=18,end_colum=8 )  # 方法二
work_book_03.save('2020年台州常住人口和城镇化率情况.xlsx')
# 问题 :TypeError: 'MultiCellRange' object is not callable
sheet_04.unmerge_cells("K4:M5")
work_book_03.save('2020年台州常住人口和城镇化率情况.xlsx')
# 问题:ValueError: Cell range K4:M5 is not merged

#  12、写入公式
sheet_04['L3'] = '= I3 * J3'
work_book_03.save('2020年台州常住人口和城镇化率情况.xlsx')

#  13、删除
sheet_04.delete_rows(idx=6,amount=4)  # idx:从第几行开始删除,amount:往后删除几行
sheet_04.delete_cols(idx=1,amount=2)  # idx:从第几列开始删除,amount:往后删除几列
work_book_03.save('2020年台州常住人口和城镇化率情况.xlsx')

#  14、插入
sheet_04.insert_rows(idx=6,amount=4)
sheet_04.insert_cols(idx=1,amount=2)
work_book_03.save('2020年台州常住人口和城镇化率情况.xlsx')

#  15、移动
sheet_04.move_range('I3:L4',rows=1,cols=15,translate=True)  # rows=1表示向下移动一行,如果向上则-1,cols=15表示向右移动15列,
# -15则表示向左移动15列,translate=True表示公式跟随变化,translate=False表示公式不跟随变化
work_book_03.save('2020年台州常住人口和城镇化率情况.xlsx')

#  16、打印区域
sheet_04.print_area = 'A1:D4'  # 打印A1:D4
work_book_03.save('2020年台州常住人口和城镇化率情况.xlsx')

#  17、打印固定表头
sheet_04.print_title_rows = '1:2'  # 每一页固定打印1-2行
sheet_04.print_title_cols = 'A:F'  # 每一页固定打印A:F列
work_book_03.save('2020年台州常住人口和城镇化率情况.xlsx')

posted on 2021-10-08 16:30  小尹学python  阅读(1214)  评论(0编辑  收藏  举报