Python获取给定字体和容器宽度的字符串的高度或行数

2024-09-28 16:19:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用openpyxl生成一个speadsheet,它包含以下格式的数据。所有单元格都应该按照给定的宽度进行包装。在

+-----------+-------------------+-----+
| Long text | More Long text h..| num |
| Here....  +-------------------+-----+
|           | More Long text h..| num |
+-----------+-------------------+-----+

问题是行高是固定的,文本被截断了。在

openpyxl似乎没有自动行高功能,所以我必须计算给定字体和宽度的高度或行数。在

我到处找过能做到这一点但运气不佳的包裹。任何解决这个问题的想法或方法都将不胜感激,谢谢!在

编辑:

^{pr2}$

在发布这个问题之前,我试着和tkinter玩了一下,但结果并不完全是我想要的

from tkinter import Tk, BOTH, Y, END, Text, font as f
root = Tk()
font = f.Font(family="Calibri", size=11)
line_height = font.metrics("linespace")
T = Text(root, width=30, font=font)
T.pack(fill=BOTH, expand=Y)
T.insert(END, "THIS IS A VERY VERY VERY VERY VERY VERY VERY LONG TEXT")
num_lines = int(T.index('end-1c').split('.')[0])

Tags: text宽度tkintermorerootnumlongtk
1条回答
网友
1楼 · 发布于 2024-09-28 16:19:56

不幸的是,openpyxl可以应用的格式比您希望的要少。尤其是行高和列宽完全取决于读取应用程序,并依赖于操作系统等。在

此外,openpyxl遵循规范而不是Excel,因此,例如,对行或列维度应用样式是Excel格式化不存在的单元格的指令。规范不包含任何关于合并单元格应如何格式化的信息。一年前提交了一个bug报告,但我们仍在等待澄清。在

为了获得最佳效果,您应该准备分析现有工作表并从中重新创建样式。注意。由于使用了OOXML格式的指针,这有点棘手。在

相关问题 更多 >