【Python】Marmir 使用指南:Python 驱动的电子表格生成器

news2024/11/26 20:39:32

在这里插入图片描述

Marmir 是一个由 Python 驱动的电子表格生成工具,专门用于将 Python 数据结构(如字典、列表等)转换为电子表格文件(如 Excel)。Marmir 的设计目标是提供比传统电子表格库(如 xlwt)更强大和灵活的操作,并且支持从多种数据源(如 Django 模型、数据库游标等)生成多种格式的表格文件(如 XLS、HTML、Google 表格)。其主要优势在于能够处理复杂的数据结构并提供丰富的表格样式和自定义格式。

在这里插入图片描述
华丽的分割线

⭕️宇宙起点

    • 🔨 Marmir 的特点
    • 📦 安装与使用
      • 安装
      • 基础使用方法
        • 1. 从字典创建电子表格
        • 2. 使用元组和自定义列顺序
        • 3. 使用自定义格式化对象
    • ♨️ 高级功能
      • 1. 与 Django 的集成
      • 2. 生成 Google 电子表格
    • 🧱 实战案例:生成报表与数据分析
    • ⁉️ 常见问题与注意事项
    • 📥 下载地址
    • 💬 结语
    • 📒 参考文献


标题1

🔨 Marmir 的特点

  1. 多格式输出:支持生成 Excel、Google 表格、HTML 表格等多种格式的表格文件。
  2. 丰富的数据源支持:支持直接从 Python 数据结构、Django QuerySets 以及数据库游标(如 Psycopg2)进行数据导入。
  3. 自动类型转换:能够智能识别数据类型(如日期、数字、字符串等)并自动进行格式化处理。
  4. 自定义样式:允许用户配置表格样式(如列宽、单元格颜色、对齐方式等),生成更美观的电子表格。

标题2

📦 安装与使用

安装

可以通过以下命令使用 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.Datemm.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.Datemm.URL 格式化时间和超链接,使生成的表格文件更加美观和易读。


标题3

♨️ 高级功能

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 云端中创建新的电子表格文档。


标题4

🧱 实战案例:生成报表与数据分析

以下是一个从数据库中导入数据,并生成格式化报表的典型案例:

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 报表,非常适合于数据分析和商业报表的自动化生成。


标题5

⁉️ 常见问题与注意事项

  1. 如何处理大规模数据集?
    可以使用 mm.Document 的流式操作来逐行写入数据,从而避免内存溢出。
  2. Django 集成时如何自定义字段?
    使用 data_model_class 自定义字段映射和显示格式。

标题6

📥 下载地址


Marmir 最新版 下载地址


标题7

💬 结语

Marmir 是一个功能强大的 Python 电子表格工具,特别适合需要从 Python 数据结构生成 Excel 或 Google 表格的场景。其丰富的数据源支持、强大的自定义功能和易用的 API,使其成为创建电子表格和报表的理想选择。


标题8

📒 参考文献

  • Marmir GitHub仓库

TheEnd


在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2192935.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ctf.bugku-备份是个好习惯

访问页面得到字符串 这串字符串是重复的; d41d8cd98f00b204e9800998ecf8427e 从前端、源码上看,除了这段字符串,没有其他信息;尝试解密,长度32位;各种解密方式试试; MD5免费在线解密破解_MD5在…

文件后缀名不见了怎么办?

有一天,突然有需要更改文件的后缀名,可奇怪的是文件只有名称,后缀不见了,这该如何修改呢? 第一步:打开此电脑,最上面一栏选择“查看” 第二步:将“文件扩展名”勾选上 第三步&…

会议时如何实现扫码签到?

如何实现扫码签到? 在现代活动管理中,签到环节是不可或缺的一部分。它不仅关系到活动的顺利进行,还涉及到参与者的体验。传统的签到方式往往耗时且效率不高,而随着技术的发展,扫码签到成为了一种高效且便捷的解决方案。…

用小学生可以理解的语言讲一下什么是大模型

好的,用小学生的语言来说,大模型就像是一个超级聪明的机器人老师,它懂得很多东西,可以帮助我们做很多事情。 1. **懂得很多**:大模型知道很多知识,就像一个巨大的图书馆,里面有很多书&#xff0…

【星汇极客】单片机竞赛之2024睿抗机器人大赛-火线速递赛道(持续更新)

前言 本人是一名嵌入式学习者,在大学期间也参加了不少的竞赛并获奖,包括但不限于:江苏省电子设计竞赛省一、睿抗机器人国二、中国高校智能机器人国二、嵌入式设计竞赛国三、光电设计竞赛国三、节能减排竞赛国三。 后面会经常写一下博客&…

归并排序:递归、非递归实现、文件排序(归并排序实现)

目录 归并排序递归实现 1.归并排序基本思想 2.归并排序单趟思路 3.代码思路步骤 3.1.归并排序实现思路步骤 3.2.总结 3.2.1.数组归并与链表归并的差异 (1)数组归并 (2)链表归并 (3)总结 3.2.2.归并排序的递归实现总结 4.归并排序递归实现代码 5.归并排序递归递归展…

用AI做电子萌宠,快速涨粉变现

今天给大家分享一个很热门的小副业—AI宠物视频 项目介绍 前一阵刷到一个萌宠账号,爆款率可真高,涨粉可真快呀。 28篇笔记涨粉3.2万,点赞更是达到了十几万。其中有6篇点赞上万。 至于究竟是不是AI其实没那么重要,重要的是&…

华为OD机试 - Excel单元格数值统计(Python/JS/C/C++ 2024 E卷 200分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…

安可数据库产品目录

‌国家安可数据库产品目录包括以下主要产品‌: ‌华为GaussDB、openguass: 由华为云计算技术有限公司提供。‌金仓数据库管理系统:由中电科金仓(北京)科技股份有限公司提供。‌神通数据库管理系统:由天津神…

上学迟到问题

刚看到这题时&#xff0c;我突然就有了思路。说起来挺可笑的当我写完这题后&#xff0c;并成功AC时&#xff0c;看着我那冗长的代码我陷入了深思&#xff0c;难道真的有必要写这么一长串吗? 这是我的代码 #include<stdio.h> int main(){int s,v,t;scanf("%d %d&q…

ROW_NUMBER

How to rewrite a query which uses the ROW_NUMBER() window function in versions 5.7 or earlier before window functions were supported e.g., SELECT ROW_NUMBER() OVER (PARTITION BY fieldA) AS rownum, myTable.* FROM myTable; index 用不上的 Solution Assuming…

Linux高阶——0928—Github数据上传markdown语言

1、Github三要素 仓库、提交、分支 提交 绿色&#xff1a;新加 红色&#xff1a;删除 主分支master或main 项目的存储单位——仓库 实际代码的存储单位——分支 分支的协同开发 2、本地数据上传到云端的过程 3、markdown

OpenHarmony(鸿蒙南向开发)——轻量和小型系统三方库移植指南(一)

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ 持续更新中…… 概述 本文为OpenHarmony开发者提供一些组织编译形式比较常见&…

【C/C++】错题记录(四)

题目一 一个函数可以有很多个返回值&#xff08;有很多个return语句&#xff09;&#xff0c;但是最终只能有一个return语句执行。 题目二 题目三 题目四 题目五 程序数据结构算法 题目六 题目七 题目八 题目九 D选项是语句……

leetcode第189题:轮转数组(C语言版)

思路1&#xff08;不推荐&#xff09; 保存数组最后一个元素&#xff0c;然后数组全体元素后移一位&#xff0c;把保存的最后一个元素存放到数组的第一个位置&#xff0c;重复这一操作&#xff0c;直到执行完了k次。 时间复杂度&#xff1a;需要用k次循环&#xff0c;里面套一层…

【2024】前端学习笔记14-JavaScript常用数据类型-变量常量

学习笔记 1.JavaScript常用数据类型1.1.Number&#xff08;数字&#xff09;1.2.String&#xff08;字符串&#xff09;1.3.Boolean&#xff08;布尔值&#xff09;1.4.Null&#xff08;空值&#xff09;1.5.Undefined&#xff08;未定义&#xff09;1.6.Object&#xff08;对象…

从WIFI到NB-IoT,探秘智能门锁的高科技接入方式

我是小米,一个喜欢分享技术的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货! Hello大家好!我是小米,一个29岁、活力满满、热爱分享技术的小米!今天,我想和大家聊聊一个与智能家居密切相关的技术话题——智能门锁的接入方式。无…

标准正态分布的数据 tensorflow 实现正态分布图,python 编程,数据分析和人工智能

import tensorflow as tf import matplotlib.pyplot as plt # 设置随机种子以获得可重复的结果 tf.random.set_seed(42) # 生成正态分布的数据 # mean0 和 stddev1 表示生成标准正态分布的数据 # shape(1000,) 表示生成1000个数据点 data tf.random.normal(mean0, stddev1, …

DOS 命令学习笔记

一、DOS 简介 DOS 是 Disk Operating System 的缩写&#xff0c;即磁盘操作系统。它是一种早期的计算机操作系统&#xff0c;用于管理计算机的硬件资源和软件资源&#xff0c;提供用户与计算机交互的界面。 二、基本 DOS 命令 &#xff08;一&#xff09;Dir 命令 功能&…

【汇编语言】寄存器(CPU工作原理)(二)—— 汇编指令的基础操作

文章目录 前言正文——&#xff08;一气呵成解决本文内容&#xff09;结语 前言 &#x1f4cc; 汇编语言是很多相关课程&#xff08;如数据结构、操作系统、微机原理&#xff09;的重要基础。但仅仅从课程的角度出发就太片面了&#xff0c;其实学习汇编语言可以深入理解计算机底…