學習過程中遇到批量將excel表格數(shù)據填入到word的問題,對于excel的函數(shù)使用不是很熟悉,python中有處理word和excel的庫,所以學習使用python實現(xiàn)對數(shù)據的批量處理。首先是需要了解處理word和excel的具體操作。
需要安裝第三方庫python-docx
python-docx API網址:https://python-docx.readthedocs.io/en/latest/#api-documentation
對表格的基本操作
# -*- coding: utf-8 -*- from docx import Document from docx.enum.text import WD_ALIGN_PARAGRAPH from docx.oxml.ns import qn from docx.shared import Pt path=r'C:\Users\hxy\Desktop\test.docx'#文件路徑 doc=Document(path)#讀入文件 #設置表格字體 doc.styles['Normal'].font.name = u'仿宋' doc.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'仿宋') #獲取所有的表格,返回列表 tables=doc.tables print(tables) #讀取第一個表格的內容,獲取全部的表格內容加個循環(huán)即可 table_1=tables[0]#第一個表 tb_rows=table_1.rows#獲取表格的行 #讀取每一行內容s for i in range(len(tb_rows)): row_data=[] row_cells=tb_rows[i].cells #讀取每一行單元格內容 for cell in row_cells: #單元格內容 row_data.append(cell.text) print(row_data) #數(shù)據填入表格,兩種方式 table_1.cell(0,1).text="測試使用"#單元格直接賦值 table_1.cell(0,3).paragraphs[0].add_run(u'whoami')#追加寫入數(shù)據 #單元格的屬性修改 run=table_1.cell(0,5).paragraphs[0].add_run("計算機") run.bold=True#字體加粗 run.font.size = Pt(9) # 字體大?。盒∥?9 table_1.cell(0,5).paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER # 居中 doc.save(path)#文件保存
python實現(xiàn)對excel表格的操作有xlrd(只能讀入,不能寫)、xlwd,openpyxl模塊能夠實現(xiàn)對excel的讀寫操作。
xlrd和xlwt都是針對Excel97-2003操作的,也就是以xls結尾的文件。很顯然現(xiàn)在基本上都是Excel2007以上的版本,以xlsx為后綴。要對這種類型的Excel文件進行操作要使用openpyxl,該模塊既可以進行“讀”操作,也可以進行“寫”操作,還可以對已經存在的文件做修改。
xlrd網址:https://pypi.org/project/xlrd/
xlrd模塊讀取excel表格
# -*- coding: utf-8 -*- import xlrd excelDir=r'C:\Users\hxy\Desktop\test.xlsx' # 打開表格 workbook=xlrd.open_workbook(excelDir) # 獲取表名 worksheet_name=workbook.sheet_names() print(worksheet_name) # 根據序號打開表 worksheet=workbook.sheet_by_index(0) # 獲取表的名稱,行,列 print(worksheet.name,worksheet.nrows,worksheet.ncols) # 獲取第一行 rows=worksheet.row_values(0) print(rows) # 獲取單元格的值 data_1=worksheet.cell_value(1,7) data_2=worksheet.cell(1,0).value data_3=worksheet.row(1)[2].value print(data_1,data_2,data_3) # print(worksheet.cell(1,2)) #讀取指定工作表的表格內容 for i in range(worksheet.nrows): row=worksheet.row_values(i) print(row)
openpyxl網址:https://bitbucket.org/openpyxl/openpyxl/src/default/
使用openpyxl讀取和寫入excel
import openpyxl excelDir=r'C:\Users\hxy\Desktop\test.xlsx' #打開工作簿對象 workbook=openpyxl.load_workbook(excelDir) #獲取工作簿中的所有表 sheetnames=workbook.sheetnames print(sheetnames) #獲取工作表對象 # sheetname=workbook[sheetnames[0]] sheetname=workbook.worksheets[0] print(sheetname) #獲取表的屬性 name=sheetname.title print(name) rows,cols=sheetname.max_row,sheetname.max_column print(rows,cols) #按行或列方式獲取表中的數(shù)據 for row in sheetname.rows: for cell in row: print(cell.value,end=" ") print() print("=="*30) for col in sheetname.columns: for cell in col: print(cell.value,end=" ") print() #獲取指定單元個的數(shù)據 data1=sheetname.cell_value(0,0) data2=sheetname.cell(0,1).value print(data1,data2) # 插入一列 sheetname.insert_cols(1) for index,row in enumerate(sheetname.rows): if index==0: row[0].value="編號" else: row[0].value=index #可以插入列表數(shù)據 data=[10,"llc",'whoami','hellowordl'] sheetname.append(data) #保存 workbook.save(filename=excelDir) print('finish')
批量操作數(shù)據
? 因為數(shù)據格式是相同的,只是填入的數(shù)據不同,所以可以通過docx和xlrd對表格的基本操作,可以實現(xiàn)對數(shù)據的批量處理。首先使用xlrd將數(shù)據讀取到列表中,然后將列表的數(shù)據填入指定的表格中。
這里只是對word和excel的基本操作,能夠完成目前所需。另外設置單元格格式,設置數(shù)據格式等更多的操作還有待學習。
__EOF__
聯(lián)系客服