import docx
import glob
import os
import csv
#設置檔案路徑
path = '範例檔'
#設置輸出檔名
output = 'output.csv'
#開啟輸出的 CSV 檔案
with open(output, 'w', newline='') as csvfile:
#建立 CSV 檔寫入器
writer = csv.writer(csvfile)
#header
writer.writerow(['檔名','學校','班級','學生','國語','數學','社會','自然','藝術'])
for filename in glob.glob(os.path.join(path, '*.docx')): #遍歷所有檔案
#doc = docx.Document("範例檔\su_sn_11122.docx")
doc = docx.Document(filename)
for table in doc.tables: #遍歷所有表格
print("--------")
_school = ''
_class = ''
_student = ''
_score1 = ''
_score2 = ''
_score3 = ''
_score4 = ''
_score5 = ''
done = False
i = 0
for row in table.rows: #遍歷表格的所有 row
#row_str = "\t".join([cell.text for cell in row.cells]) # 一行數據
#print(row_str)
j = 0
for cell in row.cells: #遍歷 row 中所有 cell
#print( cell.text + "\t" )
#print( str(i)+":"+str(j)+":"+table.cell( i, j ).text + "\t" )
if cell.text == '學校':
_school = table.cell( i, j+1 ).text #抓右邊的 cell
if cell.text == '班級':
_class = table.cell( i, j+1 ).text #抓右邊的 cell
if cell.text == '學生':
_student = table.cell( i, j+1 ).text #抓右邊的 cell
if cell.text == '國語':
_score1 = table.cell( i+1, j ).text #抓下面的 cell
if cell.text == '數學':
_score2 = table.cell( i+1, j ).text #抓下面的 cell
if cell.text == '社會':
_score3 = table.cell( i+1, j ).text #下面的 cell
if cell.text == '自然':
_score4 = table.cell( i+1, j ).text #抓下面的 cell
if cell.text == '藝術':
_score5 = table.cell( i+1, j ).text #抓下面的 cell
done = True #這是最後一筆資料
j = j + 1 #指向下一 cell
if done:
break #完成
i = i + 1 #指向下一 row
if done:
break #完成
print( _school )
print( _class )
print( _student )
print( _score1 )
print( _score2 )
print( _score3 )
print( _score4 )
print( _score5 )
with open('output.csv', 'a', newline='') as csvfile:
#建立 CSV 檔寫入器
writer = csv.writer(csvfile)
#內容
writer.writerow([filename,_school,_class,_student,_score1,_score2,_score3,_score4,_score5])
break #限制1檔1表
沒有留言:
張貼留言