• openpyxl模块


    环境安装:

    • 模块官网:https://pypi.org/project/openpyxl/

    • pip install -U openpyxl3.0.7 / pip install openpyxl3.0.7

    • 三方支持:

      • pip install lxml
      • pip install pillow
    • 首先,让我们来看一些基本定义:

      • 工作簿:一个 Excel 电子表格文档称为一个工作簿,一个 工作簿保存在扩展名为.xlsx 的文件中
      • sheet表:每个工作簿可以包含多个表(也称为工作表)
      • 活动表:用户当前查看的表(或关闭 Excel 前最后查看的表),称为活动表
      • 单元格:每个表都有一些列(地址是从 A 开始的字母)和一些行(地址是从 1 开始的数 字)。在特定行和列的方格称为单元格。每个单元格都包含一个数字或文本值。

    读取Excel表格

    #用 openpyxl 模块打开 Excel 文档
    import openpyxl
    
    #创建了一个指定的工作簿对象
    wb = openpyxl.load_workbook(filename='./data/test.xlsx')
    
    #获取工作簿的sheet表的名称
    wb.get_sheet_names()   #['Sheet']
    
    #获取指定的sheet对象
    sheet = wb.get_sheet_by_name('基本信息')
    
    #获取活动表
    wb.get_active_sheet() #<Worksheet "职位信息">
    
    """
    从表中取得单元格
    有了 Worksheet 对象后,就可以按名字访问 Cell 对象
    属性:
      value:cell中存储的值
      row:行索引
      column:列索引
      coordinate:坐标
    """
    
    cell = sheet['A2']
    cell.value
    cell.row
    cell.column
    cell.coordinate
    
    #用字母来指定列,这在程序中可能有点奇怪,特别是在 Z 列之后,列开时使用 两个字母:AA、AB、AC 等。作为替代,在调用表的 cell()方法时,可以传入整数 作为 row 和 column 关键字参数,也可以得到一个单元格。第一行或第一列的整数 是 1,不是 0。
    
    sheet.cell(row=1,column=2).value
    
    #从工作表中取得行和列
    #可以将 Worksheet 对象进行切片操作,从而取得电子表格中一行、一列或一个矩形区域中的所有 Cell 对象。
    for cell_row in sheet['A2':'E6']:
        for cell in cell_row:
            print(cell.coordinate,cell.value)
    
    #要访问特定行或列的单元格的值,也可以利用 Worksheet 对象的 rows 和 columns属性。        
    sheet.columns[0]
    
    
    

    import openpyxl, pprint
    print('Opening workbook...')
    wb = openpyxl.load_workbook('data/censuspopdata.xlsx')
    sheet = wb.get_sheet_by_name('Population by Census Tract')
    #countyData将包含你计算的每个县的总人口和普查区数目。但在它里面存储任何东西之前,你应该确定它内部的数据结构。
    countyData = {}
    print('Reading rows...')
    for row in range(2, sheet.get_highest_row() + 1):
        state = sheet['B' + str(row)].value
        county = sheet['C' + str(row)].value 
        pop = sheet['D' + str(row)].value
        countyData.setdefault(state, {})  #{state:{}}
        countyData[state].setdefault(county, {'tracts': 0, 'pop': 0}) #{state:{county:{'tracts': 0, 'pop': 0}}}
        countyData[state][county]['tracts'] += 1
        countyData[state][county]['pop'] += int(pop)
    print('Writing results...')
    resultFile = open('census2010.py', 'w')
    #使用 pprint.pformat()函数,将变量字典的值作为一个巨大的字符串, 写入文件 census2010.py
    resultFile.write('allData = ' + pprint.pformat(countyData)) 
    resultFile.close()
    print('Done.')
    
    
    # 将countyData输出到文本文件 census2010.py,你就通过 Python 程序生成了一个 Python 程序!这样做的好处是现在可以导入 census2010.py,就像任何其他 Python 模块一样
    
    import os
    import census2010
    #查看AK州Anchorage县的人口普查数据
    census2010.allData['AK']['Anchorage']
    

    写入Excel文档

    #调用 openpyxl.Workbook()函数,创建一个新的空 Workbook 对象
    import openpyxl
    
    #创建一个新的工作簿对象
    wb = openpyxl.Workbook()
    
    #获取工作表名称
    wb.get_sheet_names()
    
    #给工作表设置名称
    sheet = wb.get_active_sheet()
    sheet.title = '跟进记录表'
    
    wb.get_sheet_names()  #['跟进记录表']
    
    #保存工作表
    wb.save('./data/第一个工作簿.xlsx')
    
    """
    创建和删除工作表
    利用 create_sheet() and remove_sheet()方法,可以在工作簿中添加或删除工作表
    create_sheet()方法返回一个新的 Worksheet 对象,名为 SheetX,它默认是工作 簿的最后一个工作表。可以利用 index 和 title 关键字参数,指定新工作表的 索引或名称。
    remove_sheet()方法接受一个 Worksheet 对象作为其参数,而不是工作表名称的字符串。如果你只知道要删除的工作表的名称,就调用 get_sheet_by_name(),将它的返回值传入 remove_sheet()。
    在工作簿中添加或删除工作表之后,记得调用 save()方法来保存变更。
    """
    
    #创建sheet
    wb = openpyxl.Workbook()
    
    wb.create_sheet(title='销售记录')
    wb.create_sheet(index=1,title='养殖技术')
    wb.get_sheet_names()  # ['Sheet', '养殖技术', '销售记录']
    
    #删除sheet
    r_sheet = wb.get_sheet_by_name('养殖技术')
    wb.remove_sheet(r_sheet)
    wb.get_sheet_names()  #['Sheet', '销售记录']
    
    # 将值写入单元格
    # 将值写入单元格,很像将值写入字典中的键
    # 如果你有单元格坐标的字符串,可以像字典的键一样,将它用于 Worksheet 对 象,指定要写入的单元格。
    sheet = wb.get_active_sheet()
    sheet['A1'] = 'hello'
    sheet['B2'] = 'world'
    wb.save('./data/第二个工作簿.xlsx')
    
    import openpyxl
    wb = openpyxl.load_workbook('./data/produceSales.xlsx')
    sheet = wb.get_sheet_by_name('Sheet')
    PRICE_UPDATES = {'Garlic': 3.07,
                     'Celery': 1.19,
                     'Lemon': 1.27}
    for rowNum in range(2, sheet.get_highest_row()+1): 
        produceName = sheet.cell(row=rowNum, column=1).value
        if produceName in PRICE_UPDATES:
            sheet.cell(row=rowNum, column=2).value = PRICE_UPDATES[produceName]
    wb.save('./data/updatedProduceSales.xlsx')
    

    设置单元格的字体风格

    • 设置某些单元格行或列的字体风格,可以帮助你强调电子表格中重点的区域。 例如,在这个产品电子表格中,程序可以对 产品的名称 等行使用粗体。 或者也许你希望对每公斤价格超过5元的行使用斜体。手工为大型电子表格的某些部分设置字体风格非常令人厌烦,但程序可以马上完成。
    • 为了定义单元格的字体风格,需要从 openpyxl.styles 模块导入 Font和 Style。
    • Font参数:
    from openpyxl.styles import Font,Style
    import openpyxl
    wb = openpyxl.Workbook()
    sheet = wb.get_active_sheet()
    sheet['A3'] = 'hello bobo'
    wb.save('./data/Styles.xlsx')
    
    sheet['A3'].style #返回当前单元格的默认风格  Style(number_format='General')
    
    #可以调用 Font()来创建一个 Font 对象,并将这个 Font 对象保存在一个变量中。 然后将它传递给 Style(),得到 的 Style 对象保存在一个变量中,并将该变量赋给 Cell 对象的 style 属性。
    
    f = Font(sz=50,b=True,i=True)
    s = Style(font=f)
    sheet['A3'].style = s
    wb.save('./data/Styles.xlsx')
    
    

    公式

    • 利用 openpyxl 模块,用编程的方式在单元格中添加公式,就像 添加普通的值一样。例如:
      • sheet['B9'] = '=SUM(B1:B8)'
    import openpyxl
    wb = openpyxl.Workbook()
    sheet = wb.get_active_sheet()
    sheet['A1'] = 200
    sheet['A2'] = 300
    sheet['A3'] = '=SUM(A1:A2)'
    wb.save('./data/sum.xlsx')
    

    调整行和列

    • 在 Excel 中,调整行和列的大小非常容易,只要点击并拖动行的边缘,或列的 头部。但如果你需要根据单元格的内容来设置行或列的大小,或者希望设置大量电子表格文件中的行列大小,编写 Python 程序来做就要快得多。

    • 设置行高和列宽

      • Worksheet 对象有 row_dimensions 和 column_dimensions 属性,控制行高和列宽。
    • 注意:

      • 行的高度可以设置为 0 到 409 之间的整数或浮点值。这个值表示高度的点数。
        • 一点等于 1/72 英寸。默认的行高是 12.75。
      • 列宽可以设置为 0 到 255 之间的整数或浮点数。
        • 默认的列宽是 8.43 个字符。列宽为零或行高为零,将使单元格隐藏。
    import openpyxl
    wb = openpyxl.Workbook()
    sheet = wb.get_active_sheet()
    sheet['A1'] = 'Tall row'
    sheet['B2'] = 'Wide column'
    wb.save('./data/dimensions.xlsx')
    
    sheet.row_dimensions  
    #{1: <openpyxl.worksheet.dimensions.RowDimension at 0x108af1f98>,2: <openpyxl.worksheet.dimensions.RowDimension at 0x108af1dd8>}
    
    sheet.column_dimensions
    #DimensionHolder([('A',<openpyxl.worksheet.dimensions.ColumnDimension at 0x108af1c88>),('B',<openpyxl.worksheet.dimensions.ColumnDimension at 0x108af1978>)])
    
    #设置行高
    sheet.row_dimensions[2].height = 50
    
    #设置列宽
    sheet.column_dimensions['A'].width = 80
    
    wb.save('./data/dimensions.xlsx')
    

    合并和拆分单元格

    • 利用 merge_cells()工作表方法,可以将一个矩形区域中的单元格合并为一个单元格。
    • 要拆分单元格,就调用 unmerge_cells()工作表方法。
    import openpyxl
    wb = openpyxl.Workbook()
    sheet = wb.get_active_sheet()
    sheet.merge_cells('A1:D7') #合并
    sheet['A1'] = 'hello bobo'
    wb.save('./data/merged.xlsx')
    
    #拆分单元格
    sheet.unmerge_cells('A1:D7')
    

    冻结窗格

    • 对于太大而不能一屏显示的电子表格,“冻结”顶部的几行或最左边的几列,是很有帮助的。在 OpenPyXL 中,每个 Worksheet 对象都有一个 freeze_panes 属性,可以设置为一个 Cell 对象或一个单元格坐标的字符串。
      • 请注意,单元格上边的所有行和左边的所有列都会冻结,但单元格所在的行和列不会冻结。
    • 要解冻所有的单元格,就将 freeze_panes 设置为 None 或'A1'

    #冻结
    import openpyxl
    wb = openpyxl.load_workbook('./data/produceSales.xlsx')
    sheet = wb.get_active_sheet()
    sheet.freeze_panes = 'A2'
    wb.save('./data/produceSales.xlsx')
    
    #解冻结
    sheet.freeze_panes = None
    wb.save('./data/produceSales.xlsx')
    

    绘制图表

    • openpyxl 支持利用工作表中单元格的数据,创建条形图、折线图、散点图和饼图。要创建图表,需要做下列事情:

      • 1.从一个矩形区域选择的单元格,创建一个 Reference 对象。
      • 2.通过传入 Reference 对象,创建一个 Series 对象。
      • 3.创建一个 Chart 对象。
      • 4.将 Series 对象添加到 Chart 对象。
      • 5.可选地设置Chart 对象的drawing.top、drawing.left、drawing.width 和drawing.height变量用来设置图表的位置和大小。
      • 6.将 Chart 对象添加到 Worksheet 对象。
    • Reference 对象需要一些解释。Reference 对象表示图表要引用的数据区域。是通过调用 openpyxl.charts.Reference()函数并传入 3 个参数创建的:

      • 1.包含图表数据的 Worksheet 对象。
      • 2.两个整数的元组,代表矩形选择区域的左上角单元格,该区域包含图表数据:元组中第一个整数是行,第二个整数是列。请注意第一行是 1,不是 0。
      • 3.两个整数的元组,代表矩形选择区域的右下角单元格,该区域包含图表数据:元组中第一个整数是行,第二个整数是列。
    • 我们可以调用 openpyxl.charts.BarChart(),创建一个条形图。也可以调用openpyxl.charts.LineChart()、openpyxl.charts.ScatterChart()和 openpyxl.charts.PieChart(),创建折线图、散点图和饼图。

    import openpyxl
    wb = openpyxl.load_workbook(filename='./data/sampleChart.xlsx')
    sheet = wb.get_active_sheet()
    
        
    refObj = openpyxl.charts.Reference(sheet, (1, 2),(10,2))
    seriesObj = openpyxl.charts.Series(refObj, title='First series')
    chartObj = openpyxl.charts.BarChart()
    chartObj.append(seriesObj)
    chartObj.drawing.top = 200 # set the position
    chartObj.drawing.left = 200
    chartObj.drawing.width = 300 # set the size
    chartObj.drawing.height = 200
    sheet.add_chart(chartObj)
    wb.save('./data/sampleChart.xlsx')
    
    import openpyxl
    from openpyxl.charts import Reference,BarChart,Series
    import os
    for file_name in os.listdir('./data/Bobo公司2020-2030年营收报表'):
        if file_name != '.DS_Store':
            file_name = os.path.join('./data/Bobo公司2020-2030年营收报表',file_name)
            ex_file = openpyxl.load_workbook(file_name)
            sheet_names = ex_file.get_sheet_names()
            for sheet_name in sheet_names:
                sheet_file = ex_file.get_sheet_by_name(sheet_name)
                
                data1 = Reference(sheet_file, (2, 2),(32,2))
                data2 = Reference(sheet_file, (2, 3),(32,3))
                data3 = Reference(sheet_file, (2, 4),(32,4))
                seriesObj1 = Series(data1,title='手机')
                seriesObj2 = Series(data2,title='彩妆')
                seriesObj3 = Series(data3,title='电脑')
                
                bc = BarChart()
                bc.title = sheet_name
                bc.x_axis.title = '日期'
                bc.y_axis.title = '营收额'
                bc.append(seriesObj1)
                bc.append(seriesObj2)
                bc.append(seriesObj3)
                
                bc.drawing.top = 200 # set the position
                bc.drawing.left = 400
                bc.drawing.width = 600 # set the size
                bc.drawing.height = 400
                sheet_file.add_chart(bc)
        ex_file.save(file_name)           
    
    

    5.Excel格式文件

    Python内部未提供处理Excel文件的功能,想要在Python中操作Excel需要按照第三方的模块。

    pip install openpyxl
    

    此模块中集成了Python操作Excel的相关功能,接下来我们就需要去学习该模块提供的相关功能即可。

    image-20201218012118097

    5.1 读Excel

    • 读sheet

      from openpyxl import load_workbook
      
      wb = load_workbook("files/p1.xlsx")
      
      # sheet相关操作
      
      # 1.获取excel文件中的所有sheet名称
      """
      print(wb.sheetnames) # ['数据导出', '用户列表', 'Sheet1', 'Sheet2']
      """
      
      # 2.选择sheet,基于sheet名称
      """
      sheet = wb["数据导出"]
      cell = sheet.cell(1, 2)
      print(cell.value)
      """
      
      # 3.选择sheet,基于索引位置
      """
      sheet = wb.worksheets[0]
      cell = sheet.cell(1,2)
      print(cell.value)
      """
      
      # 4.循环所有的sheet
      """
      for name in wb.sheetnames:
          sheet = wb[name]
          cell = sheet.cell(1, 1)
          print(cell.value)
      """
      """
      for sheet in wb.worksheets:
          cell = sheet.cell(1, 1)
          print(cell.value)
      """
      """
      for sheet in wb:
          cell = sheet.cell(1, 1)
          print(cell.value)
      """
      
    • 读sheet中单元格的数据

      from openpyxl import load_workbook
      
      wb = load_workbook("files/p1.xlsx")
      sheet = wb.worksheets[0]
      
      # 1.获取第N行第N列的单元格(位置是从1开始)
      """
      cell = sheet.cell(1, 1)
      
      print(cell.value)
      print(cell.style)
      print(cell.font)
      print(cell.alignment)
      """
      
      # 2.获取某个单元格
      """
      c1 = sheet["A2"]
      print(c1.value)
      
      c2 = sheet['D4']
      print(c2.value)
      """
      
      # 3.第N行所有的单元格
      """
      for cell in sheet[1]:
          print(cell.value)
      """
      
      # 4.所有行的数据(获取某一列数据)
      """
      for row in sheet.rows:
          print(row[0].value, row[1].value)
      """
      
      # 5.获取所有列的数据
      """
      for col in sheet.columns:
          print(col[1].value)
      """
      
    • 读合并的单元格

      image-20201218011732755

      from openpyxl import load_workbook
      
      wb = load_workbook("files/p1.xlsx")
      sheet = wb.worksheets[2]
      
      # 获取第N行第N列的单元格(位置是从1开始)
      c1 = sheet.cell(1, 1)
      print(c1)  # <Cell 'Sheet1'.A1>
      print(c1.value) # 用户信息
      
      c2 = sheet.cell(1, 2)
      print(c2)  # <MergedCell 'Sheet1'.B1>
      print(c2.value) # None
      
      
      from openpyxl import load_workbook
      
      wb = load_workbook('files/p1.xlsx')
      sheet = wb.worksheets[2]
      for row in sheet.rows:
          print(row)
      
      >>> 输出结果
      (<Cell 'Sheet1'.A1>, <MergedCell 'Sheet1'.B1>, <Cell 'Sheet1'.C1>)
      (<Cell 'Sheet1'.A2>, <Cell 'Sheet1'.B2>, <Cell 'Sheet1'.C2>)
      (<Cell 'Sheet1'.A3>, <Cell 'Sheet1'.B3>, <Cell 'Sheet1'.C3>)
      (<MergedCell 'Sheet1'.A4>, <Cell 'Sheet1'.B4>, <Cell 'Sheet1'.C4>)
      (<Cell 'Sheet1'.A5>, <Cell 'Sheet1'.B5>, <Cell 'Sheet1'.C5>)
      

    1.Excel格式文件

    Python内部未提供处理Excel文件的功能,想要在Python中操作Excel需要按照第三方的模块。

    pip install openpyxl
    

    此模块中集成了Python操作Excel的相关功能,接下来我们就需要去学习该模块提供的相关功能即可。

    5.1 读Excel

    • 读sheet

      from openpyxl import load_workbook
      
      wb = load_workbook("files/p1.xlsx")
      
      # sheet相关操作
      
      # 1.获取excel文件中的所有sheet名称
      """
      print(wb.sheetnames) # ['数据导出', '用户列表', 'Sheet1', 'Sheet2']
      """
      
      # 2.选择sheet,基于sheet名称
      """
      sheet = wb["数据导出"]
      cell = sheet.cell(1, 2)
      print(cell.value)
      """
      
      # 3.选择sheet,基于索引位置
      """
      sheet = wb.worksheets[0]
      cell = sheet.cell(1,2)
      print(cell.value)
      """
      
      # 4.循环所有的sheet
      """
      for name in wb.sheetnames:
          sheet = wb[name]
          cell = sheet.cell(1, 1)
          print(cell.value)
      """
      """
      for sheet in wb.worksheets:
          cell = sheet.cell(1, 1)
          print(cell.value)
      """
      """
      for sheet in wb:
          cell = sheet.cell(1, 1)
          print(cell.value)
      """
      
    • 读sheet中单元格的数据

      from openpyxl import load_workbook
      
      wb = load_workbook("files/p1.xlsx")
      sheet = wb.worksheets[0]
      
      # 1.获取第N行第N列的单元格(位置是从1开始)
      """
      cell = sheet.cell(1, 1)
      
      print(cell.value)
      print(cell.style)
      print(cell.font)
      print(cell.alignment)
      """
      
      # 2.获取某个单元格
      """
      c1 = sheet["A2"]
      print(c1.value)
      
      c2 = sheet['D4']
      print(c2.value)
      """
      
      # 3.第N行所有的单元格
      """
      for cell in sheet[1]:
          print(cell.value)
      """
      
      # 4.所有行的数据(获取某一列数据)
      """
      for row in sheet.rows:
          print(row[0].value, row[1].value)
      """
      
      # 5.获取所有列的数据
      """
      for col in sheet.columns:
          print(col[1].value)
      """
      
    • 读合并的单元格

      from openpyxl import load_workbook
      
      wb = load_workbook("files/p1.xlsx")
      sheet = wb.worksheets[2]
      
      # 获取第N行第N列的单元格(位置是从1开始)
      c1 = sheet.cell(1, 1)
      print(c1)  # <Cell 'Sheet1'.A1>
      print(c1.value) # 用户信息
      
      c2 = sheet.cell(1, 2)
      print(c2)  # <MergedCell 'Sheet1'.B1>
      print(c2.value) # None
      
      
      from openpyxl import load_workbook
      
      wb = load_workbook('files/p1.xlsx')
      sheet = wb.worksheets[2]
      for row in sheet.rows:
          print(row)
      
      >>> 输出结果
      (<Cell 'Sheet1'.A1>, <MergedCell 'Sheet1'.B1>, <Cell 'Sheet1'.C1>)
      (<Cell 'Sheet1'.A2>, <Cell 'Sheet1'.B2>, <Cell 'Sheet1'.C2>)
      (<Cell 'Sheet1'.A3>, <Cell 'Sheet1'.B3>, <Cell 'Sheet1'.C3>)
      (<MergedCell 'Sheet1'.A4>, <Cell 'Sheet1'.B4>, <Cell 'Sheet1'.C4>)
      (<Cell 'Sheet1'.A5>, <Cell 'Sheet1'.B5>, <Cell 'Sheet1'.C5>)
      

    5.1 写Excel

    在Excel中想要写文件,大致要分为在:

    • 原Excel文件基础上写内容。

      from openpyxl import load_workbook
      
      wb = load_workbook('files/p1.xlsx')
      sheet = wb.worksheets[0]
      
      # 找到单元格,并修改单元格的内容
      cell = sheet.cell(1, 1)
      cell.value = "新的开始"
      
      # 将excel文件保存到p2.xlsx文件中
      wb.save("files/p2.xlsx")
      
    • 新创建Excel文件写内容。

      from openpyxl import workbook
      
      # 创建excel且默认会创建一个sheet(名称为Sheet)
      wb = workbook.Workbook()
      
      sheet = wb.worksheets[0] # 或 sheet = wb["Sheet"]
      
      # 找到单元格,并修改单元格的内容
      cell = sheet.cell(1, 1)
      cell.value = "新的开始"
      
      # 将excel文件保存到p2.xlsx文件中
      wb.save("files/p2.xlsx")
      

    在了解了如何读取Excel和创建Excel之后,后续对于Excel中的sheet和cell操作基本上都相同。

    from openpyxl import workbook
    
    wb = workbook.Workbook() # Sheet
    
    # 1. 修改sheet名称
    """
    sheet = wb.worksheets[0]
    sheet.title = "数据集"
    wb.save("p2.xlsx")
    """
    
    # 2. 创建sheet并设置sheet颜色
    """
    sheet = wb.create_sheet("工作计划", 0)
    sheet.sheet_properties.tabColor = "1072BA"
    wb.save("p2.xlsx")
    """
    
    # 3. 默认打开的sheet
    """
    wb.active = 0
    wb.save("p2.xlsx")
    """
    
    # 4. 拷贝sheet
    """
    sheet = wb.create_sheet("工作计划")
    sheet.sheet_properties.tabColor = "1072BA"
    
    new_sheet = wb.copy_worksheet(wb["Sheet"])
    new_sheet.title = "新的计划"
    wb.save("p2.xlsx")
    """
    
    # 5.删除sheet
    """
    del wb["用户列表"]
    wb.save('files/p2.xlsx')
    """
    
    from openpyxl import load_workbook
    from openpyxl.styles import Alignment, Border, Side, Font, PatternFill, GradientFill
    
    
    wb = load_workbook('files/p1.xlsx')
    
    sheet = wb.worksheets[1]
    
    # 1. 获取某个单元格,修改值
    """
    cell = sheet.cell(1, 1)
    cell.value = "开始"
    wb.save("p2.xlsx")
    """
    
    # 2.  获取某个单元格,修改值
    """
    sheet["B3"] = "Alex"
    wb.save("p2.xlsx")
    """
    
    # 3. 获取某些单元格,修改值
    """
    cell_list = sheet["B2":"C3"]
    for row in cell_list:
        for cell in row:
            cell.value = "新的值"
    wb.save("p2.xlsx")
    """
    
    # 4. 对齐方式
    """
    cell = sheet.cell(1, 1)
    
    # horizontal,水平方向对齐方式:"general", "left", "center", "right", "fill", "justify", "centerContinuous", "distributed"
    # vertical,垂直方向对齐方式:"top", "center", "bottom", "justify", "distributed"
    # text_rotation,旋转角度。
    # wrap_text,是否自动换行。
    cell.alignment = Alignment(horizontal='center', vertical='distributed', text_rotation=45, wrap_text=True)
    wb.save("p2.xlsx")
    """
    
    # 5. 边框
    # side的style有如下:dashDot','dashDotDot', 'dashed','dotted','double','hair', 'medium', 'mediumDashDot', 'mediumDashDotDot','mediumDashed', 'slantDashDot', 'thick', 'thin'
    """
    cell = sheet.cell(9, 2)
    cell.border = Border(
        top=Side(style="thin", color="FFB6C1"), 
        bottom=Side(style="dashed", color="FFB6C1"),
        left=Side(style="dashed", color="FFB6C1"),
        right=Side(style="dashed", color="9932CC"),
        diagonal=Side(style="thin", color="483D8B"),  # 对角线
        diagonalUp=True,  # 左下 ~ 右上
        diagonalDown=True  # 左上 ~ 右下
    )
    wb.save("p2.xlsx")
    """
    
    # 6.字体
    """
    cell = sheet.cell(5, 1)
    cell.font = Font(name="微软雅黑", size=45, color="ff0000", underline="single")
    wb.save("p2.xlsx")
    """
    
    # 7.背景色
    """
    cell = sheet.cell(5, 3)
    cell.fill = PatternFill("solid", fgColor="99ccff")
    wb.save("p2.xlsx")
    """
    
    # 8.渐变背景色
    """
    cell = sheet.cell(5, 5)
    cell.fill = GradientFill("linear", stop=("FFFFFF", "99ccff", "000000"))
    wb.save("p2.xlsx")
    """
    
    # 9.宽高(索引从1开始)
    """
    sheet.row_dimensions[1].height = 50
    sheet.column_dimensions["E"].width = 100
    wb.save("p2.xlsx")
    """
    
    # 10.合并单元格
    """
    sheet.merge_cells("B2:D8")
    sheet.merge_cells(start_row=15, start_column=3, end_row=18, end_column=8)
    wb.save("p2.xlsx")
    """
    """
    sheet.unmerge_cells("B2:D8")
    wb.save("p2.xlsx")
    """
    
    # 11.写入公式
    """
    sheet = wb.worksheets[3]
    sheet["D1"] = "合计"
    sheet["D2"] = "=B2*C2"
    wb.save("p2.xlsx")
    """
    """
    sheet = wb.worksheets[3]
    sheet["D3"] = "=SUM(B3,C3)"
    wb.save("p2.xlsx")
    """
    
    # 12.删除
    """
    # idx,要删除的索引位置
    # amount,从索引位置开始要删除的个数(默认为1)
    sheet.delete_rows(idx=1, amount=20)
    sheet.delete_cols(idx=1, amount=3)
    wb.save("p2.xlsx")
    """
    
    # 13.插入
    """
    sheet.insert_rows(idx=5, amount=10)
    sheet.insert_cols(idx=3, amount=2)
    wb.save("p2.xlsx")
    """
    
    # 14.循环写内容
    """
    sheet = wb["Sheet"]
    cell_range = sheet['A1:C2']
    for row in cell_range:
        for cell in row:
            cell.value = "xx"
    
    for row in sheet.iter_rows(min_row=5, min_col=1, max_col=7, max_row=10):
        for cell in row:
            cell.value = "oo"
    wb.save("p2.xlsx")
    """
    
    # 15.移动
    """
    # 将H2:J10范围的数据,向右移动15个位置、向上移动1个位置
    sheet.move_range("H2:J10",rows=1, cols=15)
    wb.save("p2.xlsx")
    """
    """
    sheet = wb.worksheets[3]
    sheet["D1"] = "合计"
    sheet["D2"] = "=B2*C2"
    sheet["D3"] = "=SUM(B3,C3)"
    sheet.move_range("B1:D3",cols=10, translate=True) # 自动翻译公式
    wb.save("p2.xlsx")
    """
    
    # 16.打印区域
    """
    sheet.print_area = "A1:D200"
    wb.save("p2.xlsx")
    """
    
    # 17.打印时,每个页面的固定表头
    """
    sheet.print_title_cols = "A:D"
    sheet.print_title_rows = "1:3"
    wb.save("p2.xlsx")
    """
    
  • 相关阅读:
    【Mybatis-Plus进阶学习(八)】SQL注入器
    【Mybatis-Plus进阶学习(七)】动态表名SQL解析器
    【Mybatis-Plus进阶学习(六)】多租户SQL解析器
    【Mybatis-Plus进阶学习(五)】性能分析插件
    【Mybatis-Plus进阶学习(四)】乐观锁
    【Mybatis-Plus进阶学习(三)】自动填充
    docker相关操作【动态更新ing】
    Git操作汇总【动态更新ing】
    Go 基准测试和性能测试学习使用
    Go语言的omitempty
  • 原文地址:https://www.cnblogs.com/bubu99/p/16324698.html
Copyright © 2020-2023  润新知