有没有办法在 python 中从头开始创建 .xlsm 文件?

2023-12-02

我在 mac 上使用 python 3.8.1 并尝试创建一个.xlsm文件从头开始。我看过 openpyxl 和 xlsxwriter,它们都能够创建.xlsx文件从头开始,两者都可以编辑现有的.xlsm文件,但我找不到任何有关实际创建的信息.xlsm文件从头开始。

我查看了 openpyxl 文档here和 xlsxwriter 文档here但我还没有找到任何关于如何创建.xlsm文件从头开始。我什至找不到有关如何转换的任何信息.xlsx文件到.xlsm file.

我最接近的是你可以使用vba_extract.py它包含在 xlsxwriter 中,用于提取名为的文件vbaProject.bin从现有的.xlsm文件,然后您可以将其添加到.xlsx文件,然后您可以将其另存为.xlsm文件,但我需要创建一个.xlsm从头开始创建文件,而不是依赖于那里有一些文件来创建它。

有没有 openpyxl、xlsxwriter 或任何其他实用程序可以与 python 3.8.1 一起使用来创建.xlsm从头开始创建文件,而不必依赖现有的.xlsm or a vbaProject.bin文件?与往常一样,正确、解释清楚的答案将被标记为已接受并会被投票。


感谢 Alexander Pushkarev 和 APhillips 帮助解决了这个问题。离开亚历山大的帖子,我找到了一个办法来让它发挥作用。我并不为此感到自豪,但它确实有效。

运行亚历山大的代码我收到此错误:

异常被忽略: 回溯(最近一次调用最后一次):文件 “/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/zipfile.py”, 1819 行,在delself.close() 文件“/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/zipfile.py”, 1836 号线,接近 self.fp.seek(self.start_dir) ValueError: 对已关闭文件进行 I/O 操作。

我玩了一下,发现如果我拿出来keep_vba=True来自load_workbook代码运行了函数,但在尝试打开时仍然出现上面提到的错误.xlsm用 Excel 归档。

所以,查看最新的错误,我看到最后一行说

对已关闭文件的 I/O 操作。

我查看了 openpyxl 文档并尝试在没有keep_vba=True打开之前的选项keep_vba=True它起作用了。

所以请原谅这个丑陋的代码,但这将有助于创建一个.xlsm从头开始文件,而不依赖于任何现有文件(复制和粘贴准备就绪):

from openpyxl import Workbook
from openpyxl import load_workbook

wb = Workbook()
ws = wb.active
ws['A1'] = 42
ws.append([1, 2, 3])
wb.save('new_document.xlsm')
wb1 = load_workbook('new_document.xlsm')
wb2 = load_workbook('new_document.xlsm', keep_vba=True)
wb2.save('new_document.xlsm')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法在 python 中从头开始创建 .xlsm 文件? 的相关文章

  • Python 去掉字节 b' '

    import save string with open image jpg rb as f byte f read 1 while byte b byte f read 1 print byte 我得到的字节如下 b x00 我该如何摆脱
  • 拖动数据获取信号发射两次 python gtk3

    我希望源也是目的地 我实现了下面的信号 但拖动数据获取信号触发了两次 第二次 数据变量 在 on drag data get 中 被自动选择的 ListStore 项填充 class DragSource Gtk TreeView def
  • 基于坐标合并数据框

    我有两个数据框 两个数据框都包含经度和纬度列 我想根据经度和纬度列合并这两个数据框 首先 我应用了普通merge函数 它产生空的结果数据框 我调查发现两个数据框没有相同的经度和纬度列 然后我尝试了另一个函数merge asof并将方向设置为
  • 如何从 fastapi 响应返回 PIL 图像文件列表?

    我使用 fastapi 创建了一个rest api 它将文档 pdf 作为输入并返回它的 jpeg 图像 我使用一个名为 docx2pdf 的库进行转换 from docx2pdf import convert to from fastap
  • 使用 importlib 加载已编译的模块

    从 Python 3 4 开始 模块 imp 已被弃用 使得imp load compiled modname modpath 不鼓励的加载字节码的机制 有没有一种简单的方法可以使用 importlib 加载已编译的模块 我正在向学生提供一
  • 类似 zip() 的内置函数用 None 值从左侧填充不等长度

    是否有一个内置函数 其工作方式类似于 zip 但填充结果 以便结果列表的长度是最长输入的长度并填充列表从左边例如None 已经有一个answer https stackoverflow com a 1277311 2648551 using
  • 如何编写嵌套的 __init__.py 文件

    我正在努力解决嵌套问题 init py在我正在编写的Python包中 该包具有以下架构 module init py submodule1 init py source py submodule2 init py source py sub
  • IndexError:索引 10 超出尺寸为 10 的轴 0 的范围

    我正在以数字方式为 x 网格和 x 向量以及时间网格设置网格 但我再次设置了一个数组x 位置 只能在 0 到 20 之间并且t 时间 将从 0 到 1000 以便求解热方程 但每次我想要 例如 我将步数设置为 10 时 都会收到错误 Tra
  • 使用 Paramiko 进行 DSA 密钥转发?

    我正在使用 Paramiko 在远程服务器上执行 bash 脚本 在其中一些脚本中 存在与其他服务器的 ssh 连接 如果我只使用 bash 不使用 Python 我的 DSA 密钥将被第一个远程服务器上的 bash 脚本转发并使用 以连接
  • Python代码没有抛出错误,但所需的输出不一样

    无法接收 python 代码的输出 我尝试通过打印每一行来调试代码 def get sum metrics predictions metrics for i in range 0 3 metrics append lambda x x i
  • python名称错误名称未定义

    在 python3 中运行此代码时出现错误名称未定义 def main D create empty dictionary for x in open wvtc data txt key name email record x strip
  • pysftp 与 Paramiko

    我有一个简单的要求 即在 SFTP 服务器上放置一个文件 我找到了 pysftp 和 Paramiko 库 它们似乎允许我做到这一点 并使用 Paramiko 开发了一个简单的应用程序 但我找不到比较这两个库的合适来源 因此我可以决定我可以
  • msvcrt.getch() 每次都会检测到空格

    我正在编写一个简单的Python代码 它应该检测我的击键 但由于某种原因 在每次击键后检测空格 代码 import msvcrt print press escape to quit text while 1 char msvcrt get
  • 如何在 python 3.x 中操作嵌套字典?

    我被这个问题困扰了 你能解决这个挑战吗 开始了 我们在二级字典中表示一系列比赛中球员的分数 如下所示 match1 player1 57 player2 38 match2 player3 9 player1 42 match3 playe
  • 在Python中将罗马数字转换为整数

    根据 user2486 所说 这是我当前的代码 def romanMap map M 1000 CM 900 D 500 CD 400 C 100 XC 90 L 50 XL 40 X 10 IX 9 V 5 V 4 I 1 return
  • 如何有效地计算另一列中每个元素的较大元素的数量?

    我有以下内容df name created utc 0 t1 cqug90j 1430438400 1 t1 cqug90k 1430438400 2 t1 cqug90z 1430438400 3 t1 cqug91c 143043840
  • Windows 10 conda 未被识别为内部或外部命令

    试着 conda install c conda forge requests futures 0 9 7 但失败了 conda is not recognized as an internal or external command C
  • 将 pynput 与 pyinstaller 一起使用时出现错误

    我的一个朋友让我给他写一个程序 我使用 pynput 来处理一些输入和其他功能 当我使用 pyinstaller 将程序转换为可执行文件时 启动可执行文件会出现以下错误 File site packages pynput keyboard
  • 如何使用授权 API 设置部分身份验证

    好的 我正在通过 Authorize net API 设置部分付款 以便能够使用多张卡支付单笔余额 费用 我假设他们的部分身份验证功能涵盖了我的用例 但在测试中 我可以在此处使用 API 实时控制台向您展示一个问题 https develo
  • 如何将列表转换为字典

    我有清单 a b c d 我想协调它来字典其中键是列表中每个值的位置 值是列表的值 在输出中我应该得到这样的东西 0 a 1 b 2 c 3 d Use enumerate 获取列表中每个元素的索引并dict 将其转换为字典 print d

随机推荐

  • 最佳实践:301 将 HTTP 重定向到 HTTPS(标准域)

    我一直在寻找完美的 301 重定向 但我找到了很多解决方案 但不知道什么是最好的 这就是我想做的 http 域名 tld https 域名 tld http www domain tld https 域名 tld https www dom
  • AVX512 舍入模式如何工作(或者 NDISASM 只是混淆了)?

    我正在尝试了解具体的AVX512F指令vcvtps2udq 指令的签名是VCVTPS2UDQ zmm1 k1 z zmm2 m512 m32bcst er 手册信息如下 为了尝试理解新的舍入模式 以下代码片段是用 NASM 2 12 02
  • 无法在 Centos 上使用 Diazo (plone.app.theming)

    我使用 plone4 1 和 Diazo 在我的 mac 上制作了一个门户网站 现在 我正在尝试将其部署在我的服务器 CentOs 上 其中还有另一个带有 plone4 0 5 Collectivexdv 的站点 当我使用我的重氮主题运行该
  • 在页面加载时自动记录并保存 Chrome 开发者工具分析数据?

    Chrome 开发者工具在 时间轴 选项卡上提供了一个选项 可以开始 停止记录与内存 绘画 屏幕截图 JS 配置文件相关的分析数据 一旦刷新页面 录制就会自动开始 并在页面加载后停止 有没有办法 1 自动在后台开始录制不需要 在 chrom
  • 如何从 Excel 工作簿中选取值并按活动工作簿上的函数返回它们

    我的目标是实现一些功能 我给它们提供电动机的功率 频率和速度参数 并查看另一个工作簿 其中我有电动机数据 并返回尺寸 轴直径和其他电动机详细信息 由于我还没有掌握太多 VBA 所以我尝试实现一个函数 该函数只需转到另一个工作簿中的单元格并返
  • 通过纹理偏移滚动 2D/3D 背景

    我一直在尝试在 Unity 中使用四边形来显示纹理来制作无限滚动的 2D 背景 我的想法是根据玩家的位置改变四边形的偏移 由于某种原因 当我更改偏移量时 我的图像无法正确重复 并且一旦达到偏移量 2 图像就会完全消失 纹理上 3 个不同 x
  • JSON 和处理未导出的字段

    是否有技术原因导致未导出的字段不被encoding json包含 如果不是 并且这是一个任意决定 即使未导出 是否还可以包含额外的后门选项 例如 要求导出客户端代码以获得此功能感觉很不幸 特别是如果小写字母提供封装或编组结构的决定比它们的设
  • 在 Google 文档中的某些文本后附加列表项的更有效方法

    所以目前 我有一些代码可以让我插入ListItem在 Google 文档中的一段之后 我遇到的唯一问题是 对于我想要完成的任务来说 它似乎过于复杂 这是我的代码 var search This is a test var body Docu
  • 如何保持 .NET 控制台应用程序运行?

    考虑一个在单独线程中启动某些服务的控制台应用程序 它所需要做的就是等待用户按 Ctrl C 将其关闭 以下哪项是执行此操作的更好方法 static ManualResetEvent quitEvent new ManualResetEven
  • 在Python中对大量数组进行排序的最快方法

    我正在尝试在 python 中对大量数组进行排序 我需要一次对超过 1100 万个数组执行排序 另外 如果我可以直接获取对数组进行排序的索引 那就太好了 这就是为什么 到目前为止我正在使用 numpy argsort 但这在我的机器上太慢了
  • C# 代码覆盖率指标

    是否有免费的商用代码覆盖率工具 低至个人 LOC 级别 可用 我知道 VS2008 Team Edition 但不幸的是没有预算购买许可证 所以我正在寻找一种免费的 如啤酒 替代品 有任何想法吗 NCover是 NET 的开源代码覆盖工具
  • 为什么 N3421 不提供 noexcept 限定符?

    In N3421 使运算符函子变得更大 std 函数对象的新特化是 template lt gt struct plus
  • xsd:dateTime 到 Java OffsetDateTime

    为了妥善处理xs 日期时间使用 JAXB 我必须编写自己的转换器String gt java time OffsetDateTime 正如 XML 架构定义中提到的 dateTime 受到 ISO 8601 的启发 我使用OffsetDat
  • SocketIO:通过套接字ID断开客户端连接?

    我有一个带有 SocketIO 和多个连接的节点服务器 如何根据 ID 断开现有套接字 有房间 每个房间都有一个管理员和其他连接 我的目标是使管理套接字能够根据其 ID 使任何其他套接字断开连接 解决方法是向要被踢出的客户端发送一条消息以
  • valgrind:mmap(0x600000,8192)在UME中失败,错误12(无法分配内存)

    我正在关注这个练习 此页面包含安装 Valgrind 3 6 1 的说明 但我当前的 Linux 内核版本不支持此版本的 Valgrind 因此 我安装了 Valgrind 3 11 0 并在运行此命令后按照说明进行操作 valgrind
  • Grails Gorm 如何为每个具体类插入表,其中每个具体类都继承一个抽象类

    大家好 以下是情况 我有一个抽象类 AbstractProfile 和一个具体类 GoogleProfile abstract class AbstractProfile class GoogleProfile extends Abstra
  • C# 程序使用秒表来计时操作时冻结

    我有一个控制灯的 Windows 窗体程序 这种光有自己的类别 我可以做一些事情 比如打开和关闭它 改变颜色等 我可以毫无问题地做到这一点 然而 我想要做的是让灯持续特定的时间 即 100 毫秒或 300 毫秒 取决于使用情况 我尝试使用秒
  • 将 onlongclick 侦听器添加到警报对话框

    我在 android 中有一个 AlertDialog 其中包含来自 sqlite 的好友列表 当我单击列表中的好友姓名时 就会呼叫该好友 我想做的是将一个 longclicklistener 添加到列表中 这样系统就可以提示我删除列表中的
  • 有没有办法在 Postgres 中禁用函数重载

    我和我的用户不在 PL pgSQL 中使用函数重载 每个 模式 名称 元组总是有一个函数 因此 我们希望仅按名称删除函数 更改其签名而不必先删除它 等等 例如 考虑以下函数 CREATE OR REPLACE FUNCTION myfunc
  • 有没有办法在 python 中从头开始创建 .xlsm 文件?

    我在 mac 上使用 python 3 8 1 并尝试创建一个 xlsm文件从头开始 我看过 openpyxl 和 xlsxwriter 它们都能够创建 xlsx文件从头开始 两者都可以编辑现有的 xlsm文件 但我找不到任何有关实际创建的