问题标签 [openpyxl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python - Linux 上的 Excel - 有没有办法提取评论和超链接?
有没有办法从 Linux 上的 excel 电子表格中提取单元格注释和超链接?
刚刚尝试在 openpyxl 上获取超链接:
c.value 返回单元格值/链接文本,但 .hyperlink 返回一个空字符串,尽管电子表格上有一个链接......
也许还有另一个模块可以做到这一点?
python - 从openpyxl中的坐标值获取行号和列号
我试图将excel中的坐标值转换为openpyxl中的行号和列号。
例如,如果我的单元格坐标是 D4,我想找到相应的行号和列号以用于将来的操作,在这种情况下 row = 3,column = 3。我可以使用 ws.cell('D4').row
which 返回轻松获得行号,4
那么这只是一个问题减 1。但是ws.cell('D4').column
返回了一个类似的参数D
,我不知道如何轻松地将其转换为 int 形式以进行后续操作。所以我求助于stackoverflow的聪明人。你能帮助我吗?
python - openpyxl 将 CSV 转换为 EXCEL
如何:
使用模块将带分隔符的 CSV 文件转换为 XLS(Excel 工作表)openpyxl
?
python - Openpyxl - 对象没有属性'load_workbook'
我正在尝试使用 openpyxl 加载现有工作簿。但是当我尝试运行此代码时- 我收到以下错误:
import openpyxl
工作正常,我做错了什么?
python - openpyxl - 调整列宽大小
我有以下脚本将 CSV 文件转换为 XLSX 文件,但我的列大小非常窄。每次我必须用鼠标拖动它们来读取数据。有人知道如何设置列宽openpyxl
吗?
这是我正在使用的代码。
python - 是否可以在不将整个文档加载到内存的情况下获取 Excel 文档的行数?
我正在开发一个处理大型 Excel 2007 文件的应用程序,我正在使用OpenPyXL来完成它。OpenPyXL 有两种不同的读取 Excel 文件的方法——一种是“普通”方法,即一次将整个文档加载到内存中,另一种方法是使用迭代器逐行读取。
问题是当我使用迭代器方法时,我没有得到任何文档元数据,如列宽和行/列数,我真的需要这些数据。我假设这些数据存储在靠近顶部的 Excel 文档中,因此不必将整个 10MB 文件加载到内存中即可访问它。
那么,有没有办法在不先将整个文档加载到内存中的情况下获得行/列数和列宽?
python - 在 Python 中使用 Openpyxl 修改现有 Excel 文件
我基本上是在尝试从 CSV 文件中复制一些特定的列,然后使用 python 将它们粘贴到现有的 excel 文件[*.xlsx] 中。例如,您有一个这样的 CSV 文件:
所以,我想复制 col_3 和 col_4 并将 col_8 和 col_9 中的它们粘贴到现有的 excel 文件中[这是一个 .XLSX 格式]。我已经尝试以各种方式解决这个问题,但找不到确切的方法。我试过这样的事情:
接着
但这个解决方案的问题是它不允许我保存为 *.XLSX 格式,这是我严格要求的。
我尝试使用 Openpyxl,因为它可以处理 *.XLSX 格式,但找不到修改现有 excel 文件的方法。有人可以帮忙吗?
疑问:1)我们真的可以从 CSV 文件中读取一整列并使用 python 存储到数组/列表中吗?2)我们可以使用openpyxl或任何其他包修改现有的.XLSX格式的excel文件吗?
python - openpyxl 请不要在导入时将文本假定为数字
关于如何阻止 Excel 将文本解释为数字,或如何使用 openpyxl 输出数字格式存在许多问题,但我还没有看到任何解决此问题的方法:
我有一个别人给我的 Excel 电子表格,所以我没有创建它。当我用 Excel 打开文件时,我有某些值,如“5E12”(克隆数字,如果有人关心的话)似乎正确显示,但每个值旁边都有一个绿色小箭头警告我“这似乎是一个数字存储为文本”。Excel 然后询问我是否要将其转换为数字,如果我看到是,我得到 5000000000000,然后它会自动转换为科学计数法并再次显示 5E12,只有这一次文本输出会显示带有零的完整数字. 请注意,在转换之前,这实际上是文本,甚至是 Excel,我只是被警告/提供转换它。
因此,当使用 openpyxl(从 openpyxl.reader.excel 导入 load_workbook)读取此文件时,5E12 会自动转换为 5000000000000。我假设 openpyxl 与 Excel 所做的假设相同,只有转换发生时没有提示或我的输入。
我怎样才能防止这种情况发生?我不希望看起来像“存储为文本的数字”的文本转换为数字。除非我这么说,否则它们是文本。
到目前为止,我发现的唯一解决方案是在每个单元格的前面添加单引号,但这不是一个理想的解决方案,因为它是手工劳动而不是编程解决方案。此外,解决方案必须是通用的,因为我并不总是知道这个问题可能发生在哪里(我每天要阅读数百万行,所以我不想手动做任何事情)。
我认为这是 openpyxl 的问题。2011 年初有一个谷歌小组讨论提到了这个问题,但认为它太罕见了。https://groups.google.com/forum/?fromgroups=#!topic/openpyxl-users/HZfpShMp8Tk
那么,有什么建议吗?
python - 使用 openpyxl 将边框应用于范围内的所有单元格
我有一个脚本,它采用 pandas 数据框并将其分成几百块并将每个块保存为单独的 excel 文件。每个块将具有相同的列数,但行数会有所不同。我已经想出了如何使用 openpyxl 将所有其他必要的格式应用于这些文件,但我还没有确定应用边框的最快方法。另外,我认为我只是没有正确应用边框,因为下面的代码(我怀疑它不需要单独遍历每个单元格)没有应用任何边框。
所以这段代码有效,但它没有应用我期望的边框(excel中的默认边框),而且它比我想要的要多得多。我的期望是我应该能够做这样的事情:
这个功能存在吗?如果没有,有人可以请至少解释一下如何应用默认边框样式而不是这个稍微厚一点的边框吗?Border.BORDER_THICK、Border.BORDER_MEDIUM、Border.BORDER_THIN 或 Border.BORDER_HAIR 似乎都不正确。
谢谢!
python - Python:使用 Peewee 转储数据库数据
背景
我正在寻找一种将使用 Python 和 Peewee 进行的 MySQL 查询结果转储到 excel 文件的方法,包括数据库列标题。我希望导出的内容以与数据库中的列几乎相同的顺序排列。此外,我希望有一种方法可以跨多个可能具有略微不同字段的类似数据库工作。澄清一下,一个数据库可能有一个包含“User, PasswordHash, DOB, [...]”的用户表,而另一个数据库有“User, PasswordHash, Name, DOB, [...]”。
问题
我的主要问题是以有序的方式获取列标题。迄今为止的所有尝试都导致了无序的结果,并且所有这些都没有那么优雅。
其次,到目前为止,我的方法导致我(个人)讨厌维护的代码,我知道这是一个不好的迹象。
工作至今
目前,我已经使用 Peewee 的 pwiz.py 脚本为目标数据库中的每个预先存在的数据库表生成模型,然后输入所有主键和外键。关系已建立,一些简短的测试表明它们正确关联。
代码:我设法使用类似于以下内容的方式获取列标题:
如前所述,这是无序的。此外,这样做会迫使我做一些类似的事情
相应地动态填充字段。
想法和可能的解决方案
手动写出我想要的东西在数组中的顺序,并使用它来循环和填充数据。这样做的优点是非常严格/精细的控制。缺点是我需要为每个数据库指定这个。
为所有可能遇到的字段创建(无论是手动还是通过方法)具有相关加权值的字段哈希,然后编写一个根据权重对“_meta.get_field_names()”进行排序的方法。这样做的缺点是列可能不是 100% 以正确的顺序排列,例如在一个 DB 中 Name 在 DOB 之前,而在另一个 DB 之后。
随时告诉我我做错了,或者提出完全不同的方法,我全都听好了。我对 Python 和 Peewee(实际上是一般的 ORM)非常陌生。我可以切换回 Perl 并通过 DBI 进行数据库查询,几乎没有任何麻烦。但是,它的 excel 库会给我带来很多问题,我想借此机会扩展我的知识。