我想从 HTML 字段(可以写入文本并设置粗体、斜体、字体颜色大小等的字段)生成 Word 文档。我用这个Python-docx来生成WOrd文档。一切都好(添加图片,文本,..)唯一的问题是样式。问题是我的word文档中有内容但没有样式。
我尝试将内容保存为 HTML 文件,然后创建一个 python-docx 文件,如下所示:
html_f=open('f_html.html','w')
html_f.write(u''+contenu)
html_f.close()
doc2=docx.Document('f_html.docx')
Run Code Online (Sandbox Code Playgroud)
但我没有结果,Document() 也没有找到该文件。请提供任何帮助
我正在使用 python docx 库写入 .docx 文件。我想预先指定特定句子的字体大小和颜色。我的问题是我无法同时进行。我来举例说明——
from docx import Document
from docx.shared import Pt #Helps to specify font size
from docx.shared import RGBColor #Helps to specify font Color
document=Document() #Instantiation
p=document.add_heading(level=0)
p.add_run('I want this sentence colored red with fontsize=22').font.size=Pt(22) #Specifies fontsize 22
p.add_run('This line gets colored red').font.color.rgb=RGBColor(255,0,0) #Specifies RED color
document.save('path/file.docx')
Run Code Online (Sandbox Code Playgroud)
我很清楚地知道,我设置的颜色Red第二句,既然有一个=前Pt(22)和RGBColor(255,00)这样我就可以不适用fontsize,并color同时
有没有办法同时应用这两个属性?
编辑:我想要I want this sentence colored red with fontsize=22红色的线条。
我正在使用 python-docx 将文本放入 MS Word 中。我可以将其设置为粗体或居中,但如何同时做到这两点。
这里加粗的是:
p=document.add_paragraph().add_run('test word')
p.font.size = Pt(16)
p.bold = True
Run Code Online (Sandbox Code Playgroud)
这是中心:
p=document.add_paragraph('test word')
p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
Run Code Online (Sandbox Code Playgroud)
如何同时做到粗体和居中?
我需要将模板的全部内容复制到新文档中。问题是表格不能被复制。目前,我的代码负责复制粗体和斜体等样式。
def get_para_data(output_doc_name, paragraph):
output_para = output_doc_name.add_paragraph()
for run in paragraph.runs:
output_run = output_para.add_run(run.text)
# Run's bold data
output_run.bold = run.bold
# Run's italic data
output_run.italic = run.italic
# Run's underline data
output_run.underline = run.underline
# Run's color data
output_run.font.color.rgb = run.font.color.rgb
# Run's font data
output_run.style.name = run.style.name
# Paragraph's alignment data
output_para.paragraph_format.alignment =
paragraph.paragraph_format.alignment
input_doc=Document('templatemain.docx')
output_doc=Document()
for para in input_doc.paragraphs:
get_para_data(output_doc, para)
output_doc.save('OutputDoc.docx')
Run Code Online (Sandbox Code Playgroud)
我发现的大多数复制表的帮助是附加它们。但是我正在将模板复制到一个空白文档中,所以这对我没有任何帮助。
我正在尝试用 Python 创建一个 word 文档。我在终端中执行了 pip install python-docx 。
我的代码如下所示:
from docx import Document
document = Document()
document.save('Test.docx')
Run Code Online (Sandbox Code Playgroud)
我无法创建新文档。我错过了什么?安装 python-docx 的现有答案对我不起作用。
from exceptions import PendingDeprecationWarning
ModuleNotFoundError: No module named 'exceptions'
Run Code Online (Sandbox Code Playgroud) 我正在绘制一些数据,我想自动生成报告。我可以保存该图,然后将其添加到我的文档中。但是,我更喜欢直接执行,而不保存步骤。浏览 python-docx 文档我怀疑这个包是否可行。还有别的办法吗?
我的代码现在看起来像这样
from docx import Document
from docx.shared import Inches
import matplotlib.pyplot as plt
import numpy as np
t = np.arange(0.0, 2.0, 0.01)
s = 1 + np.sin(2*np.pi*t)
plt.plot(t, s)
plt.savefig('test.png')
document = Document()
document.add_heading('Report',0)
document.add_picture('test.png', width=Inches(1.25))
document.save('report.docx')
Run Code Online (Sandbox Code Playgroud) 我将一些代码从 IDLE 3.5(64 位)转移到 pycharm(Python 2.7)。大部分代码仍然有效,例如我可以从 docx.enum.text 导入 WD_LINE_SPACING,但由于某种原因我无法导入 WD_ALIGN_PARAGRAPH。
起初,几乎没有导入起作用,但是在我执行
pip install python-docx
而不是
pip install docx之后
,除了 WD_ALIGN_PARAGRAPH 之外,大多数导入都起作用。
# works
from __future__ import print_function
import xlrd
import xlwt
import os
import subprocess
from calendar import monthrange
import datetime
from docx import Document
from datetime import datetime
from datetime import date
from docx.enum.text import WD_LINE_SPACING
from docx.shared import Pt
# does not work
from docx.enum.text import WD_ALIGN_PARAGRAPH
Run Code Online (Sandbox Code Playgroud)
我没有收到任何错误消息,但 Pycharm 将该行标记为错误:“在‘text.py’中找不到引用‘WD_ALIGN_PARAGRAPH’”。
所以,我尝试用 Python Docx 解决问题。我需要重构我的 .docx 文档,我需要更改所有文档的字体名称和字体大小。您可以建议什么解决方案?
使用此代码,字体名称会发生变化,但字体大小不会发生变化。
from docx import Document
from docx.shared import Pt
document = Document('path/to/file.docx')
style = document.styles['Normal']
font = style.font
font.name = 'Arial'
font.size = Pt(10)
for paragraph in document.paragraphs:
paragraph.style = document.styles['Normal']
document.save('refactored.docx')
Run Code Online (Sandbox Code Playgroud) 我目前正在使用 python docx,它需要十六进制值来格式化字体颜色,例如
font.color.rgb = RGBColor(0x70, 0xad, 0x47)
Run Code Online (Sandbox Code Playgroud)
然而,我需要将争论存储RGBColor在一个变量中,确切地说是一个字典,但是当您在变量中存储十六进制值时,它会将其格式化为 int 。例子:
code = (0x70, 0xad, 0x47)
print(code)
Run Code Online (Sandbox Code Playgroud)
返回:(112, 173, 71)
并使用该hex()函数存储它会将其格式化为str.
code = (hex(0x70), hex(0xad), hex(0x47))
print(code)
Run Code Online (Sandbox Code Playgroud)
返回:('0x70', '0xad', '0x47')
并且RGBColor运算符不会接受字符串,并且我无法将这些字符串重新格式化回 anint因为我收到错误ValueError: invalid literal for int() with base 10: '0x70'
在夏季,如何存储十六进制值(例如0x70, 0xad, 0x47整数),然后将其输入操作RGBColor符?
我有以下代码。
for row in table.rows:
for cell in row.cells:
if cell.tables:
<some code>
else:
<different code>
Run Code Online (Sandbox Code Playgroud)
但我需要将其写在一行中,如下所示,以便 in<different code>只else运行一次,而不是由于循环而多次运行。
if any(cell.tables for cell in row.cells for row in table.rows):
<some code>
else:
<different code>
Run Code Online (Sandbox Code Playgroud)
然而,这一行在row.cells处显示未解决的引用“行”错误。这个衬垫可以工作,但不知道为什么它在这个 docx 表案例中不起作用。如果除了单行 if 条件之外,是否可以以不同且更好的方式完成此操作,我也欢迎提出建议。
python-docx ×10
python ×9
python-3.x ×3
docx ×2
ms-word ×2
python-2.7 ×2
colors ×1
font-size ×1
fonts ×1
hex ×1
html ×1
matplotlib ×1
pycharm ×1
xml ×1