Marmir 是一个由 Python 驱动的电子表格生成工具,专门用于将 Python 数据结构(如字典、列表等)转换为电子表格文件(如 Excel)。Marmir 的设计目标是提供比传统电子表格库(如 xlwt
)更强大和灵活的操作,并且支持从多种数据源(如 Django 模型、数据库游标等)生成多种格式的表格文件(如 XLS、HTML、Google 表格)。其主要优势在于能够处理复杂的数据结构并提供丰富的表格样式和自定义格式。
⭕️宇宙起点
- 🔨 Marmir 的特点
- 📦 安装与使用
- 安装
- 基础使用方法
- 1. 从字典创建电子表格
- 2. 使用元组和自定义列顺序
- 3. 使用自定义格式化对象
- ♨️ 高级功能
- 1. 与 Django 的集成
- 2. 生成 Google 电子表格
- 🧱 实战案例:生成报表与数据分析
- ⁉️ 常见问题与注意事项
- 📥 下载地址
- 💬 结语
- 📒 参考文献
🔨 Marmir 的特点
- 多格式输出:支持生成 Excel、Google 表格、HTML 表格等多种格式的表格文件。
- 丰富的数据源支持:支持直接从 Python 数据结构、Django QuerySets 以及数据库游标(如 Psycopg2)进行数据导入。
- 自动类型转换:能够智能识别数据类型(如日期、数字、字符串等)并自动进行格式化处理。
- 自定义样式:允许用户配置表格样式(如列宽、单元格颜色、对齐方式等),生成更美观的电子表格。
📦 安装与使用
安装
可以通过以下命令使用 pip 安装 Marmir:
pip install Marmir
安装完成后,即可在 Python 项目中导入 mm
模块,并开始创建电子表格。
基础使用方法
Marmir 提供了简单的 API 来快速创建和输出电子表格文件。以下是几种常见的用法:
1. 从字典创建电子表格
使用字典列表创建电子表格,并保存为 XLS 文件:
import datetime
import mm
# 定义数据
now = datetime.datetime.now().replace(microsecond=0)
my_data = [
{'msg': "我的第一行", 'id': 1, 'when': now},
{'msg': "我的第二行", 'id': 2, 'when': now}
]
# 创建电子表格文档
mm_doc = mm.Document(my_data)
mm_doc.write("example.xls")
该代码将 my_data
转换为 Excel 文件 example.xls
,其中每一行为一个字典。
2. 使用元组和自定义列顺序
除了使用字典,还可以使用元组并指定列的顺序:
# 定义列顺序和数据
my_headers = ('id', 'msg', 'when')
my_data = [
(1, "我的第一行", now),
(2, "我的第二行", now)
]
# 按列顺序生成电子表格
mm_doc = mm.Document(my_data, order=my_headers)
mm_doc.write("ordered_example.xls")
3. 使用自定义格式化对象
Marmir 提供了内置类型(如 mm.Date
、mm.URL
)来增强数据的格式化功能:
my_data = [
{'msg': "我的第一行", 'id': 1, 'when': mm.Date(datetime.datetime.now(), "%Y-%m-%dT%H:%M:%S"), 'homepage': mm.URL("https://github.com/brianray")},
{'msg': "我的第二行", 'id': 2, 'when': datetime.datetime.now(), 'homepage': mm.URL("http://twitter.com/brianray", "Tweet Me")}
]
# 创建包含自定义格式化对象的文档
mm_doc = mm.Document(my_data)
mm_doc.write("formatted_example.xls")
该代码会根据 mm.Date
和 mm.URL
格式化时间和超链接,使生成的表格文件更加美观和易读。
♨️ 高级功能
1. 与 Django 的集成
Marmir 支持直接从 Django QuerySets 生成电子表格:
from yourproject.models import TestModel
from mm.contrib.django.data_model import DjangoDataModel
from mm.contrib.django.grid import DjangoGrid
# 使用 Django QuerySet 生成电子表格
django_query_set = TestModel.objects.all()
mm_doc = mm.Document(django_query_set, data_model_class=DjangoDataModel, grid_class=DjangoGrid)
mm_doc.write("django_example.xls")
这种方式适合快速生成基于数据库查询结果的电子表格文件。
2. 生成 Google 电子表格
Marmir 还支持将数据直接发布到 Google 电子表格中:
mm_doc.write_gdata("Example Spreadsheet", "Username", "Password")
只需提供 Google 账号的用户名和密码,即可在 Google 云端中创建新的电子表格文档。
🧱 实战案例:生成报表与数据分析
以下是一个从数据库中导入数据,并生成格式化报表的典型案例:
import psycopg2
import mm
# 使用 Psycopg2 连接数据库
conn = psycopg2.connect(database="testdb", user="user", password="password", host="127.0.0.1", port="5432")
cursor = conn.cursor()
cursor.execute("SELECT id, name, age FROM employees")
# 使用 Marmir 生成 XLS 文件
mm_doc = mm.Document(cursor)
mm_doc.write("employee_report.xls")
该代码展示了如何使用 Marmir 从数据库中读取数据,并生成 Excel 报表,非常适合于数据分析和商业报表的自动化生成。
⁉️ 常见问题与注意事项
- 如何处理大规模数据集?
可以使用mm.Document
的流式操作来逐行写入数据,从而避免内存溢出。 - Django 集成时如何自定义字段?
使用data_model_class
自定义字段映射和显示格式。
📥 下载地址
Marmir 最新版 下载地址
💬 结语
Marmir 是一个功能强大的 Python 电子表格工具,特别适合需要从 Python 数据结构生成 Excel 或 Google 表格的场景。其丰富的数据源支持、强大的自定义功能和易用的 API,使其成为创建电子表格和报表的理想选择。
📒 参考文献
- Marmir GitHub仓库