当前位置: 首页 > news >正文

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

在这里插入图片描述

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


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

相关文章:

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

Marmir 是一个由 Python 驱动的电子表格生成工具,专门用于将 Python 数据结构(如字典、列表等)转换为电子表格文件(如 Excel)。Marmir 的设计目标是提供比传统电子表格库(如 xlwt)更强大和灵活的…...

深入理解 JavaScript 事件循环机制:单线程中的异步处理核心

深入理解 JavaScript 事件循环机制:单线程中的异步处理核心 JavaScript 是一门单线程的编程语言,也就是说它在同一时间只能执行一个任务。然而,现代 Web 应用经常需要处理大量的异步操作,如用户输入、网络请求、定时器等。为了确…...

Stream流的终结方法(二)——collect

1.Stream流的终结方法 2. collect方法 collect方法用于收集流中的数据放到集合中去,可以将流中的数据放到List,Set,Map集合中 2.1 将流中的数据收集到List集合中 package com.njau.d10_my_stream;import java.util.*; import java.util.f…...

【C语言系统编程】【第一部分:操作系统知识】1.1.操作系统原理

第一部分:操作系统知识 1.1 操作系统原理 1.1.1 进程管理 1.1.1.1 进程的概念与生命周期 进程是程序在计算机中的一次执行实例,包括了程序的代码、数据、以及运行的上下文环境。进程管理是操作系统的核心任务之一。 作用:管理所有执行中…...

基于Java+VUE+echarts大数据智能道路交通信息统计分析管理系统

大数据智能交通管理系统是一种基于Web的系统架构,通过浏览器/服务器(B/S)模式实现对城市交通数据的高效管理和智能化处理。该系统旨在通过集成各类交通数据,包括但不限于车辆信息、行驶记录、违章情况等,来提升城市管理…...

leetcode-42. 接雨水 单调栈

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表…...

ThinkPHP和PHP的区别

文章目录 ThinkPHP和PHP的区别一、引言二、PHP简介1、第一步1.1、示例代码 三、ThinkPHP简介2、第二步2.1、特点2.2、示例代码 四、总结 ThinkPHP和PHP的区别 一、引言 在Web开发领域,PHP是一种广泛使用的开源脚本语言,而ThinkPHP则是一个基于PHP的MVC…...

clientWidth,offsetWidth,scrollHeight

clientWidth: offsetWidth: scrollHeight:...

SVN版本回退

SVN 版本回退三种方法: Update item to this version 假设我们的项目文件一共有8个版本,它版本号分别是1,2,3,4,5,6,7,8。 这个选项的作用是将文件版本更新到对应所选的…...

IDEA关联Tomcat

一、Tomcat服务器 web服务器,就是运行web项目的容器 即运行java代码的一个容器 webapp(web应用程序) --> 就是我们写的javaweb项目 Tomcat 是Apache 软件基金会(Apache Software Foundation)下的一个核心项目,免费开源、并支持Servlet 和J…...

MongoDB mongoose 的 save、insert 和 create 方法的比较

目录 save 方法 insert 方法 create 方法 使用会话和事务 总结 在本文中,我们将介绍 MongoDB 中使用 mongoose 操作 数据库时的三种常见方法:save、insert 和 create。这些方法可以用于将数据存储到 MongoDB 数据库中,并且在一定程度上具…...

Maven安装使用

说明:Maven是Apache旗下的一个开源项目,是一款用于管理和构建java项目的工具。一般来说,它帮助我们管理依赖、构建项目。本文介绍在Windows系统下安装Maven。 下载&安装&验证 下载 首先,在Maven官网(https:…...

微信第三方开放平台接入本地消息事件接口报错问题java.security.InvalidKeyException: Illegal key size

先看报错: java.security.InvalidKeyException: Illegal key sizeat javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1039)at javax.crypto.Cipher.implInit(Cipher.java:805)at javax.crypto.Cipher.chooseProvider(Cipher.java:864)at javax.crypto.Cipher.in…...

如何只修改obsidian图片链接为markdown

如何只修改obsidian图片链接为markdown 前言插件配置 使用注意 前言 适合有一定了解obsidian用法和插件市场,还有相对路径的人 插件 在obsidian插件市场搜索—开梯子 配置 首先使用ctrlp打开命令面板,也可以在左侧通过图标打开命令面板&#xff0c…...

AI不可尽信

看到某项目有类似这样的一段代码 leaves : make([]int, 10) leaves leaves[:0]没理解这样的连续两行,有何作用? 初始化一个长度和容量都为10的切片,接着把切片长度设置为0 即如下demo: (在线地址) package mainimport "fmt"func main() {leaves : make([]int, 1…...

[C++]使用纯opencv部署yolov11旋转框目标检测

【官方框架地址】 GitHub - ultralytics/ultralytics: Ultralytics YOLO11 🚀 【算法介绍】 YOLOv11是一种先进的对象检测算法,它通过单个神经网络实现了快速的物体检测。其中,旋转框检测是YOLOv11的一项重要特性,它可以有效地检…...

Python入门--函数

目录 1. 函数介绍 2. 函数的定义 3. 函数的参数 4. 函数的返回值 5. 函数说明文档 6. 函数的嵌套调用 7. 函数的作用域 (1). 局部变量 (2). 全局变量 (3). global关键字 1. 函数介绍 函数:是组织好的,可重复使用的,用来实现特定功能…...

winFrom界面无法打开

🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&am…...

【Linux】Ubuntu20.04上使用RabbitVCS的图形化SVN

文章目录 1、RabbitVCS1.1、RabbitVCS 介绍1.2、RabbitVCS 主要功能1.3、Ubuntu下 TortoiseSVN 替代者 2、安装2.1、命令安装2.2、安装使用2.3、使用权限 3、解决SVN无法保存密码问题3.1、问题描述3.2、解决方法 1、RabbitVCS 1.1、RabbitVCS 介绍 它是一款Linux系统下的图形…...

DMA直接存储器存取

参考视频:[8-1] DMA直接存储器存取_哔哩哔哩_bilibili DMA简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输,无须CPU干预,节省了CPU的资源 12个独立可…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA

浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...

毫米波雷达基础理论(3D+4D)

3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...

2.3 物理层设备

在这个视频中,我们要学习工作在物理层的两种网络设备,分别是中继器和集线器。首先来看中继器。在计算机网络中两个节点之间,需要通过物理传输媒体或者说物理传输介质进行连接。像同轴电缆、双绞线就是典型的传输介质,假设A节点要给…...