【问题标题】:wrap_text with openpyxl. How to use documentation to resolve deprecation warning?wrap_text 与 openpyxl。如何使用文档来解决弃用警告?
【发布时间】:2019-10-09 11:18:01
【问题描述】:

我运行以下 openpyxl 命令以在第 9 行之后的所有行中换行。它工作正常,但会引发弃用警告。我很想弄清楚如何使用诸如https://openpyxl.readthedocs.io/en/stable/ 之类的文档来确定当前未弃用的 wrap_text 方式。但我总是觉得这些文档对我来说很混乱而且没有帮助。例如,如果我搜索 wrap_text 我会得到:https://openpyxl.readthedocs.io/en/stable/api/openpyxl.styles.alignment.html#openpyxl.styles.alignment.Alignment.wrapText

但这并没有告诉我如何换行。我只是不知道如何使用文档吗?是否有一些我要解开的谜团,这样我就不必无休止地在谷歌上搜索如何使用 openpyxl?如何查看此类文档并弄清楚如何将 wrap_text 包含在单元格中?

代码如下:

from openpyxl import load_workbook
from openpyxl.styles import Alignment

file1 = "C:\\folder\\inputFile1.xlsx"
wb=load_workbook(file1)
ws = wb.active
for rows in ws.iter_rows(min_row=10, max_row=None, min_col=None, max_col=None):
    for cell in rows:
       cell.alignment =  cell.alignment.copy(wrapText=True)
    wb.save('C:\\folder\file1_wrap.xlsx')    

这里是弃用警告:

C:\Users\Jcurran\AppData\Local\Continuum\anaconda3\lib\site-packages\ipykernel_launcher.py:10: DeprecationWarning: Call to deprecated function copy (使用 copy(obj) 或 cell.obj = cell.对象 + 其他)。 在我们加载内容时从 sys.path 中删除 CWD。​​p>

我如何通过https://openpyxl.readthedocs.io/en/stable/ 的文档找到使用当前(未弃用)方法在单元格中包装文本所需的信息的方法?

我在我的环境中使用 Jupyter。 Shift tab 或 tab 没有给我任何有用的东西。

有什么建议吗?我渴望自给自足,但无法掌握如何浏览文档以获得答案。一定有什么线索吗?有些源代码可能我不知道如何定位?

【问题讨论】:

  • 使用版本3.0.0,没有得到DeprecationWarning。 Edit您的问题并添加print(openpyxl.__version__)
  • 哇。我可以发誓我下载了最新的 openpyxl。我想我没有。 >>> 导入 o​​penpyxl >>> openpyxl.__version__ '2.5.14'

标签: python openpyxl python-3.7


【解决方案1】:

我了解到我没有最新的 openpyxl 版本。 pip install openpyxl 安装 2.5。我把它升级到3.0。 现在,当我查看https://openpyxl.readthedocs.io/en/stable/index.html 时,它更有意义:-)

我现在知道 openpyxl 3.0 文档的“使用样式”部分是格式化数据的地方。

所以我点击它,然后转到https://openpyxl.readthedocs.io/en/stable/styles.html

那个页面告诉我这个:

>>> alignment=Alignment(horizontal='general',
...                     vertical='bottom',
...                     text_rotation=0,
...                     wrap_text=False,
...                     shrink_to_fit=False,
...                     indent=0)

我可以使用该信息用这一行包装文本:

cell.alignment = Alignment(wrapText=True)

现在事情开始对我有意义了。 :-) 谢谢!

【讨论】:

    猜你喜欢
    • 2020-04-07
    • 2022-09-26
    • 2012-01-31
    • 2010-11-23
    • 1970-01-01
    • 2012-08-07
    • 1970-01-01
    • 2017-03-12
    • 2022-10-26
    相关资源
    最近更新 更多