ZetCode

Python xlsxwriter

最后修改于 2024 年 1 月 29 日

Python xlsxwriter 教程展示了如何使用 xlsxwriter 在 Python 中写入 Excel xlsx 文件。

xlsxwriter

xlsxwriter 是一个 Python 库,用于写入 Excel 2007+ XLSX 文件格式的文件。

Excel xlsx

在本文中,我们使用 xlsx 文件。xlsx 是 Microsoft Excel 使用的开放 XML 电子表格文件格式的文件扩展名。xlsm 文件支持宏。xls 格式是专有的二进制格式,而 xlsx 基于 Office Open XML 格式。

$ pip install xlsxwriter

我们使用 pip 工具安装 xlsxwriter

Python xlsxwriter 第一个示例

下面的程序创建一个简单的 Excel 文件。

first.py
#!/usr/bin/python

import xlsxwriter

wb = xlsxwriter.Workbook('first.xlsx')
ws = wb.add_worksheet()

ws.write('A1', 'misty mountains')
ws.write(2, 0, 123)

wb.close()

在示例中,我们将数据写入两个单元格。

import xlsxwriter

我们导入模块。

wb = xlsxwriter.Workbook('first.xlsx')

创建了一个新的工作簿。工作簿是文档所有其他部分的容器。参数是 Excel 文件的名称。

ws = wb.add_worksheet()

我们使用 add_worksheet 添加一个新的工作表。

ws.write('A1', 'misty mountains')
ws.write(2, 0, 123)

我们写入两个单元格。识别单元格有两种基本方法。Excel 键 A1 表示工作表的左上角单元格。在第二种情况下,前两个参数是单元格的行和列。索引从零开始。

wb.close()

最后,我们关闭文件。

Python write_xlsx 写入数据

有各种方法可以将数据写入工作表。

writing.py
#!/usr/bin/python

from datetime import datetime
import xlsxwriter
import datetime

wb = xlsxwriter.Workbook('writing.xlsx')
ws = wb.add_worksheet()

ws.set_column('A:A', 25)

ws.write_string('A1', 'misty mountains')
ws.write_number(1, 0, 123)
ws.write_url('A3', 'http://webcode.me')

df = wb.add_format({'num_format': 'dd/mm/yy'})
ws.write_datetime('A4', datetime.datetime.now(), df)

ital = wb.add_format({'italic': True})
bold = wb.add_format({'bold': True})
cent = wb.add_format({'align': 'center'})

ws.write_rich_string('A5', bold, 'an old falcon ',
                     ital, 'wild river', cent)

ws.write_boolean('A6', True)

wb.close()

在示例中,我们写入了一个数字、一个字符串、一个 URL、一个日期时间、一个富文本字符串和一个布尔值。

ws.set_column('A:A', 25)

我们使用 set_column 扩大第一列。宽度以字符为单位设置。

ws.write_string('A1', 'misty mountains')
ws.write_number(1, 0, 123)

使用 write_string 写入字符串;使用 write_number 写入数字。

ws.write_url('A3', 'http://webcode.me')

使用 write_url 写入 URL。

df = wb.add_format({'num_format': 'dd/mm/yy'})
ws.write_datetime('A4', datetime.datetime.now(), df)

使用 write_datetime 写入日期时间。我们还指定了日期时间格式。

ital = wb.add_format({'italic': True})
bold = wb.add_format({'bold': True})
cent = wb.add_format({'align': 'center'})

ws.write_rich_string('A5', bold, 'an old falcon ',
                        ital, 'wild river', cent)

使用 add_format,我们创建了三个格式单元。使用 write_rich_string 写入富文本字符串。格式应用于相邻的文本。最后一个格式(在我们的例子中是 cent)应用于整个文本。

ws.write_boolean('A6', True)

最后,使用 write_boolean 写入布尔值。

Python xlsxwriter write_row & write_column

要写入一列数据,我们使用 write_column 方法。要写入一行数据,我们使用 write_row 方法。

rows_cols.py
#!/usr/bin/python

import xlsxwriter

wb = xlsxwriter.Workbook('rows_cols.xlsx')
ws = wb.add_worksheet()

vals = [12, 14, 25, 29, 19, 35]

ws.write_column('A1', vals)
ws.write_row(8, 0, vals)

wb.close()

我们有一个整数列表。我们将这些整数写入单列和单行。


将数据存储在字典中是很常见的。

dics.py
#!/usr/bin/python

import xlsxwriter

wb = xlsxwriter.Workbook('dics.xlsx')
ws = wb.add_worksheet()

sales = {'Product A': [104, 411, 122, 345], 'Product B': [
    807, 913, 932, 567], 'Product C': [89, 91, 82, 88]}

cn = 0
for k, v in sales.items():

    ws.write(0, cn, k)
    ws.write_column(1, cn, v)
    cn += 1

wb.close()

在示例中,我们写入存储在字典中的数据。

sales = {'Product A': [104, 411, 122, 345], 'Product B': [
    807, 913, 932, 567], 'Product C': [89, 91, 82, 88]}

我们有一个 Python 字典中三个产品的销售情况。

cn = 0
for k, v in sales.items():

    ws.write(0, cn, k)
    ws.write_column(1, cn, v)
    cn += 1

我们遍历字典,将每个字典项打印在一列中,将键作为标题,将值作为列数据。

Python xlsxwriter merge_range

merge_range 函数合并一个单元格范围。其参数是左上角和右下角单元格的行和列、要写入的数据以及可选的单元格格式。

merge.py
#!/usr/bin/python

import xlsxwriter

wb = xlsxwriter.Workbook('merging.xlsx')
ws = wb.add_worksheet()

mf = wb.add_format({'align': 'center', 'valign': 'vcenter'})
ws.merge_range(1, 1, 2, 2, 'an old falcon', mf)

ws.merge_range('E5:G6', 'misty mountains', mf)

wb.close()

在示例中,我们合并了两组单元格。

Python xlsxwriter insert_image

使用 insert_image 方法将图像插入工作表。

image.py
#!/usr/bin/python

import xlsxwriter

wb = xlsxwriter.Workbook('image.xlsx')
ws = wb.add_worksheet()

ws.write('A1', 'Sid, the sloth')

ws.insert_image('A3', 'sid.jpg')

wb.close()

该示例将 JPEG 图像插入单元格。

Python xlsxwriter write_formula

使用 write_formula 写入公式。请注意,必须重新计算工作表才能使其正常工作。

formula.py
#!/usr/bin/python

import xlsxwriter

vals = [12, 32, 12, 4, 99, 78]

wb = xlsxwriter.Workbook('formula.xlsx')
ws = wb.add_worksheet()

for idx, e in enumerate(vals):
    ws.write_number(idx, 0, e)

ws.write_formula(7, 0, '=SUM(A1:A6)')

wb.close()

该示例将 SUM 公式写入单元格,该公式计算 A 列值的总和。

来源

使用 Python 和 XlsxWriter 创建 Excel 文件

在本文中,我们使用了 xlsxwriter 库。我们使用 xlsxwriter 创建了一些基本的 Excel 文件。

作者

我叫 Jan Bodnar,我是一名充满热情的程序员,拥有丰富的编程经验。我从 2007 年开始撰写编程文章。迄今为止,我已撰写了 1400 多篇文章和 8 本电子书。我在教学编程方面拥有十多年的经验。

列出所有 Python 教程