当前位置: 首页 > 工具软件 > Excel Writer > 使用案例 >

Python Excel Writer:创建,写入(文本,数字,公式),修改,保存,应用设置,合并-取消合并单元格等

黄向明
2023-12-01

    借助openpyxl模块,我们还可以在python中写入excel文件。

该过程有点类似于在python中读取Excel电子表格。

使用python Excel writer,我们将创建excel工作表,在单元格中写入文本数字公式

修改后,我们将保存工作簿。

我们还将在excel工作簿中添加删除工作表,应用设置字体样式,设置单元格和区域的宽度高度合并取消合并单元格。

Python Excel创建和保存文件:
import openpyxl as xl

mywb = xl.Workbook()

print(mywb.get_sheet_names())    # ['Sheet']

sheet = mywb.active

title = sheet.title              # 'Sheet'

sheet.title = 'MyNewTitle'

print(mywb.get_sheet_names())    # ['MyNewTitle']

mywb.save('NewExcelFile.xlsx')

 借用已存在excel,修改生成新excel

import openpyxl as xl

mywb = xl.load_workbook('bill.xlsx')

sheet = mywb.active

sheet.title = 'Working on Save as'

mywb.save('example_filetest.xlsx')

在Excel中创建和删除工作表:

import openpyxl as xl

mywb = xl.Workbook()
# mywb.get_sheet_names() -> ['Sheet']

mywb.create_sheet()    # <Worksheet "Sheet1">
# mywb.get_sheet_names() -> ['Sheet','Sheet1']

mywb.create_sheet(index=0, title='1st Sheet')
# mywb.get_sheet_names() -> ['1st Sheet','Sheet','Sheet1']

mywb.create_sheet(index=2, title='2nd Sheet')
# mywb.get_sheet_names() -> ['1st Sheet', 'Sheet', '2nd Sheet', 'Sheet1']

mywb.remove_sheet(mywb.get_sheet_by_name('1st Sheet'))
mywb.remove_sheet(mywb.get_sheet_by_name('Sheet1'))
# mywb.get_sheet_names() -> ['Sheet', '2nd Sheet']

mywb.save('savePath')
'''
很明显,从四张纸上删除两张纸后,只剩下两张纸了。 
remove_sheet方法采用工作表对象而不是工作表名称,
而不是为该特定工作表创建对象,然后将其删除,
我们调用get_sheet_by_name()并将其传递给工作表名称,
它返回的值是remove_sheet( ) 方法。
最后,使用save()方法保存修改后的文件。
在这种情况下,请删除工作表。
'''

Python excel在单元格中写入值:现在,我们将看到如何在excel工作表中将值写入特定单元格。当然,我们应该知道我们要写入的单元格的地址。

>>> import openpyxl

>>> mywb = openpyxl.Workbook()

>>> mysheet = mywb.get_sheet_by_name('Sheet')

>>> mysheet['F6'] = 'Writing new Value!'

>>> mysheet['F6'].value    

'Writing new Value'

将不同的样式应用于表格,强调或强调某些行或列。将某些统一样式应用于excel工作表非常重要,这样可以使读取数据时更加清晰。

但是请注意,首先应格外小心地设计样式,其次始终以不同的名称保存excel工作簿。

首先,我们将导入openpyxl,然后导入要在我们的代码中使用的字体和样式。

这是一个示例,该示例创建一个新工作簿并将单元格F6设置为具有32点斜体的字体。

>>> import openpyxl

>>> from openpyxl.styles import Font, Style

>>> mywb = openpyxl.Workbook()

>>> mysheet = mywb.get_sheet_by_name('Sheet')

>>> italic32Font = Font(size=32, italic=True)

>>> sobj = Style(font=italic24Font)

>>> mysheet['F6'].style = sobj

>>> mysheet['F6'] = 'Applying Styles!'

>>> mywb.save('Appliedstyle.xlsx')

'''
在openpyxl for excel工作表中,
每个单元格都有一个样式对象,
该对象位于该单元格的style属性中。
我们创建一个样式对象,
并将其分配给样式属性。
'''

字体对象有四个参数:

  1. 名称:使用字符串值,并引用字体名称,例如“ Arial”。
  2. 大小:一个整数值,引用大小。
  3. Bold:布尔值,Bold字体为True。
  4. 斜体:布尔值,斜体字体为True。

在下面的示例中,我们将调用Font()方法来创建Font对象并将其存储在变量中,

下一步将是将其作为参数传递给Style()方法。

我们将那个对象存储在另一个变量中,

并将其分配给特定的单元格对象。

>>> import openpyxl

>>> from openpyxl.styles import Font, Style

>>> mywb = openpyxl.Workbook()

>>> mysheet = mywb.get_sheet_by_name('Sheet')

 

>>> firstFontObj = Font(name='Arial', bold=True)

>>> firstStyleObj = Style(font=firstFontObj)

>>> mysheet['F6'].style = firstStyleObj

>>> mysheet['F6'] = 'Bold Arial'

 

>>> secondFontObj = Font(size=32, italic=True)

>>> secondStyleObj = Style(font=secondFontObj)

>>> mysheet['D7'].style = secondStyleObj

>>> mysheet['D7'] = '32 pt Italic'

 

>>> mywb.save('ApplicationofStyles.xlsx')

Python Excel编写公式:

# mysheet['F6'] = '=Sum(D7:D20)'

>>> import openpyxl

>>> mywb = openpyxl.Workbook()

>>> mysheet = mywb.active

>>> mysheet['F6'] = 500

>>> mysheet['F7'] = 800

>>> sheet['D3'] = '=SUM(F6:F7)'

>>> mywb.save('Applyingformula.xlsx')

Excel调整工作表中的行和列:

'''我们可以使用openpyxl在excel电子表格中设置行高,列宽。我们还可以冻结行或列,使其始终显示。我们还可以隐藏行或列。'''

>>> import openpyxl

>>> mywb = openpyxl.Workbook()

>>> mysheet = mywb.active

>>> mysheet['F6'] = 'Tall row'

>>> mysheet['D7'] = 'Wide column'

>>> mysheet.row_dimensions[3].height = 65

>>>mysheet.column_dimensions['F'].width = 25

>>>mywb.save('Heightandwidth.xlsx')

'''
excel电子表格中的默认行高为12.75点。其中1点等于1/72英寸。
您可以在0到409之间设置一个值。
列宽可以设置为0到255之间的值。
它可以是整数或浮点值(十进制数)。
如果将列的宽度设置为0或行的高度设置为0,则它​​将被隐藏。
'''

Excel合并和取消合并

'''merge_cells方法将两个单元格地址作为其参数。
第一个单元格是要合并的矩形区域的左上角,第二个单元格是右下角。
如果要设置该合并区域的值,则使用整个合并区域左上角单元格的地址。
'''

>>> import openpyxl

>>>my wb = openpyxl.Workbook()

>>> mysheet = mywb.active

>>> mysheet.merge_cells('B2:D3')

>>> mysheet['A1'] = 'cells merged together.'

>>> mysheet.merge_cells('F6:F7')

>>> mysheet['G5'] = 'Two merged cells.'

>>> mywb.save('Mergingcells.xlsx')

如果要取消合并单元格,请使用以下思路。

>>> import openpyxl

>>> mywb = openpyxl.load_workbook('Mergingcells.xlsx')

>>> mysheet = mywb.active

>>> mysheet.unmerge_cells('B2:D3')

>>> mysheet.unmerge_cells('F6:F7')

>>> mywb.save('unmerged.xlsx')    

 

 类似资料: