python-docx編輯word表格


 


一、修改數據類型(中英)

需求:

代碼:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#-*-coding:gbk*-
import  os
import  docx
#from docx.enum.table import WD_TABLE_ALIGNMENT
from  docx.enum.text  import  WD_ALIGN_PARAGRAPH
 
filepath  =  r 'f:/1/'
def  main():
     docxlist  =  os.listdir(filepath)
     for  mydocx  in  docxlist:
         newdocx  =  docx.Document(filepath  +  str (mydocx))
         #newdocx.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
         table  =  newdocx.tables
         for  oTable  in  table:
             rows_num  =  len (oTable.rows)
             columns_num  =  len (oTable.columns)
             if  columns_num > =  5 :
                 for  in  range (rows_num):
                     #English -> Chinese
                     ostring  =  oTable.cell(j,  3 ).text
                     oTable.cell(j,  4 ).paragraphs[ 0 ].paragraph_format.alignment  =  WD_ALIGN_PARAGRAPH.CENTER
                     if  ostring  = =  'TIMESTAMP' :
                         oTable.cell(j,  3 ).text  =  ostring.replace( "TIMESTAMP" "時間戳" )
                         oTable.cell(j,  4 ).text  =  ""
                     elif  ostring  = =  'VARCHAR2' :
                         oTable.cell(j,  3 ).text  =  ostring.replace( "VARCHAR2" "字符串" )
                     if  ostring  = =  'DATE' :
                         oTable.cell(j,  3 ).text  =  ostring.replace( "DATE" "日期" )
                         oTable.cell(j,  4 ).text  =  ""
                     elif  ostring  = =  'NUMBER' :
                         oTable.cell(j,  3 ).text  =  ostring.replace( "NUMBER" "整數" )
                     elif  ostring  = =  'FLOAT' :
                         oTable.cell(j,  3 ).text  =  ostring.replace( "FLOAT" "小數" )
                 #oTable.alignment = WD_TABLE_ALIGNMENT.CENTER
         newdocx.save( 'f:/2/' +  str (mydocx))
if  __name__  = =  '__main__' :
     main()

二、數據類型為日期時,清空位數內容

需求:

代碼:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time    : 2019/2/20 14:12
# @File    : date_del.py
 
 
from  docx  import  Document   # 導入庫
"""
word表格中
"""
path  =  "C:\\Users\\1\\Desktop\\福建省質監局標准信息資源目錄.docx"   # 文件路徑
document  =  Document(path)   # 讀入文件
tables  =  document.tables   # 獲取文件中的表格集
one_cells  =  []
for  table  in  tables:
     rows_num  =  len (table.rows)
     columns_num  =  len (table.columns)
     if  rows_num >  2  and  columns_num  = =  4 :
         for  in  range ( 1 , rows_num):   # 第二行開始
             if  table.cell(i,  3 ).text  = =  '日期'  or  table.cell(i,  1 ).text  = =  '日期' :
                 one_cells.append(table.cell( 0 1 ).text)
             for  in  range ( 0 , columns_num):
                 if  table.cell( 0 1 ).text  in  one_cells:
                     if  table.cell(i, j).text  = =  '位數' :
                         table.cell(i, j  +  1 ).text  =  ''
 
document.save( "C:\\Users\\1\\Desktop\\1\\福建省質監局標准信息資源目錄.docx" )
# 校驗修改內容
for  in  one_cells:
     print (i)

三、表格中添加單元格

需求:

參考:https://www.jianshu.com/p/9da61bf35cb7

代碼:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time    : 2019/2/25 9:52
# @File    : table_add_cell.py
 
 
from  docx  import  Document
from  docx.enum.text  import  WD_ALIGN_PARAGRAPH
from  docx.oxml.ns  import  qn
from  docx.shared  import  Pt
 
"""
word表格,添加一個單元格以及內容
"""
path  =  "C:\\Users\\1\\Desktop\\成都市質量技術監督局標准層信息資源目錄.docx"   # 文件路徑
document  =  Document(path)   # 讀入文件
# 設置字體為: 宋體
document.styles[ 'Normal' ].font.name  =  u '宋體'
document.styles[ 'Normal' ]._element.rPr.rFonts. set (qn( 'w:eastAsia' ), u '宋體' )
 
tables  =  document.tables   # 獲取文件中的tables
# 被修改表格的列表
one_cells  =  []
 
 
def  match_table():
     """
     遍歷文檔匹配滿足條件的表格
     :return:
     """
     for  table  in  tables:
         rows_num  =  len (table.rows)
         columns_num  =  len (table.columns)
         if  rows_num >  2  and  columns_num  = =  4 :
             one_text  =  table.cell( 0 1 ).text
             if  len (one_text)  = =  29 :
                 one_cells.append(one_text)
 
                 end_text  =  table.cell(rows_num  -  1 , columns_num  -  1 ).text
                 if  end_text:
                     # 添加一行
                     table.add_row()
                     set_font(table,  5 0 )
                 else :
                     set_font(table, rows_num  -  1 , columns_num  -  2 )
     document.save( "C:\\Users\\1\\Desktop\\1\\python_word_table_add_cell.docx" )
 
 
def  set_font(table, a, b):
     """
     設置表格字體樣式
     :param table: 表格
     :param a: 行坐標
     :param b: 列坐標
     :return:
     """
     run  =  table.cell(a, b).paragraphs[ 0 ].add_run(u '信息資源生產格式' )   # 內容為:信息資源生產格式
     run.bold  =  True   # 加粗
     run.font.size  =  Pt( 9 )   # 字體大小:小五-9
     table.cell(a, b).paragraphs[ 0 ].alignment  =  WD_ALIGN_PARAGRAPH.CENTER   # 居中
 
     run1  =  table.cell(a, b  +  1 ).paragraphs[ 0 ].add_run(u 'ORACLE' )
     run1.font.size  =  Pt( 9 )
     table.cell(a, b  +  1 ).paragraphs[ 0 ].alignment  =  WD_ALIGN_PARAGRAPH.CENTER
 
 
def  check_data():
     # 校驗修改內容
     for  in  one_cells:
         print (i)
 
 
if  __name__  = =  '__main__' :
     match_table()
     check_data()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM