Day10-Python操作word文件作业
import openpyxl
from docx import Document
from docx. shared import Pt, Cm, RGBColor
from docx. enum. text import WD_PARAGRAPH_ALIGNMENT
from docx. oxml. ns import qn
from docx. enum. style import WD_STYLE_TYPE, WD_BUILTIN_STYLE
from docx. enum. table import WD_CELL_VERTICAL_ALIGNMENT
wb = openpyxl. open ( 'files/学生信息.xlsx' )
sheet = wb[ 'students' ]
m_r = sheet. max_row
m_c = sheet. max_column
doc = Document( )
p7 = doc. add_paragraph( )
run7 = p7. add_run( )
run7. add_picture( 'files/aoli.jpg' , width= Cm( 15 ) , height= Cm( 13 ) )
p7. paragraph_format. alignment = WD_PARAGRAPH_ALIGNMENT. CENTER
h1 = doc. add_heading( level= 1 )
h1. paragraph_format. alignment = WD_PARAGRAPH_ALIGNMENT. CENTER
run81 = h1. add_run( '旺旺大学' )
run81. font. bold = True
run81. font. size = Pt( 50 )
run81. font. color. rgb = RGBColor( 105 , 105 , 105 )
h2 = doc. add_heading( level= 2 )
h2. paragraph_format. alignment = WD_PARAGRAPH_ALIGNMENT. CENTER
run91 = h2. add_run( '2023年上学年成绩分析报告' )
run91. font. bold = True
run91. font. size = Pt( 30 )
run91. font. color. rgb = RGBColor( 0 , 0 , 0 )
doc. add_page_break( )
table = doc. add_table( m_r, m_c, style= 'Medium Shading 1' )
table. style. font. size = Pt( 10 )
table. style. paragraph_format. alignment = WD_PARAGRAPH_ALIGNMENT. CENTER
rows = table. rows
for row in rows:
row_index = row. _index
col = 1
if row. _index == 0 :
row. height = Pt( 35 )
for cell in row. cells:
cell. vertical_alignment = WD_CELL_VERTICAL_ALIGNMENT. CENTER
val = str ( sheet. cell( row_index + 1 , col) . value)
p = cell. paragraphs[ 0 ]
run1 = p. add_run( val)
run1. font. size = Pt( 20 )
run1. font. name = '黑体'
r = run1. _element. rPr. rFonts
r. set ( qn( 'w:eastAsia' ) , '黑体' )
col += 1
else :
row. height = Pt( 20 )
for cell in row. cells:
cell. vertical_alignment = WD_CELL_VERTICAL_ALIGNMENT. CENTER
val = str ( sheet. cell( row_index + 1 , col) . value)
p = cell. paragraphs[ 0 ]
run2 = p. add_run( val)
run2. font. size = Pt( 10 )
run2. font. name = '宋体'
r = run2. _element. rPr. rFonts
r. set ( qn( 'w:eastAsia' ) , '宋体' )
col += 1
scores = [ ]
for n in range ( 2 , m_r + 1 ) :
cell2 = sheet. cell( n, 4 )
val = int ( cell2. value)
scores. append( val)
tatol_score = 0
ok_num= 0
for score in scores:
tatol_score += score
if score >= 60 :
ok_num += 1
average_score = tatol_score / ( m_r - 1 )
ok_rate = ok_num / ( m_r - 1 )
max_score = scores[ 0 ]
max_num = 1
nums = m_r - 1
for n in range ( 1 , nums) :
score = scores[ n]
if score == max_score:
max_num += 1
if score > max_score:
max_score = score
max_num = 1
p1 = doc. add_paragraph( )
run11 = p1. add_run( '总人数: ' )
run12 = p1. add_run( str ( nums) )
run13 = p1. add_run( ' 人' )
p1. paragraph_format. space_before = Pt( 20 )
p1. style. font. size = Pt( 15 )
run12. font. bold = True
p2 = doc. add_paragraph( )
run21 = p2. add_run( '最高分: ' )
run22 = p2. add_run( str ( max_score) )
run23 = p2. add_run( ' 分,共 ' )
run24 = p2. add_run( str ( max_num) )
run25 = p2. add_run( ' 人' )
p2. paragraph_format. space_before = Pt( 10 )
run22. font. bold = True
run24. font. bold = True
p3 = doc. add_paragraph( )
run31 = p3. add_run( '平均分: ' )
run32 = p3. add_run( str ( average_score) )
run33 = p3. add_run( ' 分' )
p3. paragraph_format. space_before = Pt( 10 )
run32. font. bold = True
p4 = doc. add_paragraph( )
run41 = p4. add_run( '及格率: ' )
run42 = p4. add_run( str ( ok_rate) )
p4. paragraph_format. space_before = Pt( 10 )
run42. font. bold = True
p5 = doc. add_paragraph( '旺旺大学教务部' )
p5. paragraph_format. first_line_indent = Pt( 320 )
p5. paragraph_format. space_before = Pt( 40 )
p6 = doc. add_paragraph( '2023年2月17日' )
p6. paragraph_format. first_line_indent = Pt( 300 )
p6. paragraph_format. space_before = Pt( 8 )
doc. save( 'files/学生成绩报告.docx' )