#.word读写
from docx import Document
from docx.shared import Cm, Inches, Pt, RGBColor
from docx.oxml.ns import qn
from docx import shared
from docx.enum.style import WD_STYLE_TYPE
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.enum.table import WD_TABLE_ALIGNMENT, WD_CELL_VERTICAL_ALIGNMENT
def simple_paragragh():
doc = Document()
doc.add_paragraph("这是第一段")
doc.add_paragraph("这是第二段")
doc.add_picture('img.png', width=shared.Cm(10))
doc.paragraphs[-1].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
doc.save(r"test.docx")
def simple_font():
doc = Document()
p1 = doc.add_paragraph()
text1 = p1.add_run("第一段文字是中文;The first paragraph is in Chinese")
text1.font.size = Pt(15)
text1.bold = True
text1.font.name = 'Times New Roman'
text1.element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
p2 = doc.add_paragraph()
p2.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
text2 = p2.add_run("第二段文字是英文;The second paragraph is in English")
text2.font.size = Pt(10)
text2.bold = False
text2.font.name = 'Times New Roman'
text2.element.rPr.rFonts.set(qn('w:eastAsia'), '黑体')
p3 = doc.add_paragraph()
p3.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
p3.paragraph_format.first_line_indent = Pt(21)
p3.paragraph_format.line_spacing = 1.5
p3.paragraph_format.space_before = 0
p3.paragraph_format.space_after = 0
text3 = p3.add_run("第三段文字是测试段落,为了测试左缩进,还要去测试右缩进,"
"第三段文字是测试段落,为了测试左缩进,还要去测试右缩进,"
"第三段文字是测试段落,为了测试左缩进,还要去测试右缩进,")
text3.font.size = Pt(10.5)
text3.bold = False
text3.font.italic = False
text3.font.name = 'Times New Roman'
text3.element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
doc.save('test.docx')
def simple_table():
doc = Document()
cols = 11
table = doc.add_table(rows=1, cols=cols, style='Table Grid')
table.alignment = WD_TABLE_ALIGNMENT.CENTER
hdr_cells = table.rows[0].cells
Fields = ['序号', '字段', '日期', 'x1', 'y1', 'x2', 'y2', '重要性', '整数', '类型', '备注']
for i in range(cols):
hdr_cells[i].paragraphs[0].paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
run = hdr_cells[i].paragraphs[0].add_run(Fields[i])
run.font.name = u'宋体'
run._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
run.font.bold = True
if i == 2:
hdr_cells[i].width = Cm(2.7)
f1 = open('test.txt')
rows = 0
for line in f1:
row_cells = table.add_row().cells
array = list(map(eval, line.split(",")))
rows += 1
strs = []
for i in range(cols):
if i == 0:
strs.append(str(rows))
elif i < 3:
strs.append('')
elif i < 7:
strs.append(str(array[i - 3]))
elif i == 7:
strs.append('正常')
elif i == 8:
strs.append('10')
elif i == 9:
strs.append('P')
elif i == 10:
strs.append('')
for i in range(cols):
row_cells[i].paragraphs[0].paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
run = row_cells[i].paragraphs[0].add_run(strs[i])
run.font.name = u'宋体'
run._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
f1.close()
table.cell(1, 1).merge(table.cell(rows, 1))
table.cell(1, 1).text = ''
table.cell(1, 1).paragraphs[0].paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
run = table.cell(1, 1).paragraphs[0].add_run('B')
run.font.name = u'宋体'
run._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
table.cell(1, 1).vertical_alignment = WD_CELL_VERTICAL_ALIGNMENT.CENTER
table.cell(1, 2).merge(table.cell(int(rows / 2), 2))
table.cell(1, 2).text = ''
table.cell(1, 2).paragraphs[0].paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
run = table.cell(1, 2).paragraphs[0].add_run('2020-3-24')
run.font.name = u'宋体'
run._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
table.cell(1, 2).vertical_alignment = WD_CELL_VERTICAL_ALIGNMENT.CENTER
table.cell(int(rows / 2 + 1), 2).merge(table.cell(rows, 2))
table.cell(int(rows / 2 + 1), 2).text = ''
table.cell(int(rows / 2 + 1), 2).paragraphs[0].paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
run = table.cell(int(rows / 2 + 1), 2).paragraphs[0].add_run('2020-3-25')
run.font.name = u'宋体'
run._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
table.cell(int(rows / 2 + 1), 2).vertical_alignment = WD_CELL_VERTICAL_ALIGNMENT.CENTER
doc.save('test.docx')
if __name__ == '__main__':
simple_table()