一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python自動化之批量生成含指定數據的word文檔

Python自動化之批量生成含指定數據的word文檔

2022-03-07 00:13軟件測試君 Python

在平時工作當中,經常需要處理文件,特別是Word,我們常常會機械的重復打開、修改、保存文檔等一系列操作。本文將主要介紹如何通過Python批量生成含指定數據的word文檔,感興趣的同學可以來看一看

一、需求說明

在平時工作當中,經常需要處理文件,特別是Word,處理Word時會遇一類比較常見的場景:文檔中大部分文字固定不變,小部分內容需要修改。

這時我們會機械的重復打開、修改、保存文檔等一系列操作,內容少還可勉強接受,內容一旦多了,心里難免會心浮氣躁。

今天我要給大家介紹一個秘密武器-docxtpl開發包,有了這個只需寫一份模板,其他的都交給電腦自己進行。

首先需要你的電腦安裝好了Python環境,并且安裝好了Python開發工具。

如果你還沒有安裝,可以參考以下文章:

如果僅用Python來處理數據、爬蟲、數據分析或者自動化腳本、機器學習等,建議使用Python基礎環境+jupyter即可,安裝使用參考Windows/Mac 安裝、使用Python環境+jupyter notebook

如果想利用Python進行web項目開發等,建議使用Python基礎環境+Pycharm,安裝使用參考:Windows下安裝、使用Pycharm教程,這下全了 和 Mac下玩轉Python-安裝&使用Python/PyCharm 。

秘密武器介紹

docxtpl:一個很強大的包,其主要通過對docx文檔模板加載,從而對其進行修改。

pandas:提供高性能易用數據類型和分析工具

安裝相關的第三方庫

Windows下按住Win+R打開運行窗口,輸入cmd進入命令提示符窗口(Mac打開終端即可),輸入以下命令安裝相關包:

pip install docxtpl

pip install pandas

使用案例

生成某學校計算機與信息工程學院的新生入學通知書合集。word模板和表格內容如下(雙括號處為待填寫的部分):

Python自動化之批量生成含指定數據的word文檔

Python自動化之批量生成含指定數據的word文檔

效果如下

Python自動化之批量生成含指定數據的word文檔

二、開始動手動腦

第一步:導入相關模塊:

  1. from docxtpl import DocxTemplate
  2. import pandas as pd
  3. import os

第二步:用Python新建文件夾用來存放入學通知書,如果文件夾已存在代碼會跳過這一步:

  1. zpath = os.getcwd() + '\\' #獲取當前的路徑
  2. zpath = r'E:\python\tj' + '\\'
  3. file_path = zpath + r'\通知書合集'
  4. try:
  5. os.mkdir(file_path) #創建一級目錄
  6. except:
  7. pass

第三步:讀取csv文件中的數據:

把表格里的每一列數據分別賦值給一個series類型變量,可以把series看成數組一樣的類型。

  1. data = pd.read_csv(zpath+'AdmissionList.csv', encoding='gbk') #讀取csv里的目標數據
  2. name = data["姓名"].str.rstrip() # str.rstrip()用于去掉空白
  3. academy = data["學院"].str.rstrip()
  4. major = data["專業"].str.rstrip()
  5. begin_date = data["開始時間"].str.rstrip()
  6. end_date = data["結束時間"].str.rstrip()

第四步:將數據寫入模板:

遍歷表格的每一行,將數據存入字典列表,

  1. num = data.shape[0] # 獲取數據行數
  2. for i in range(num):
  3. context = {
  4. "姓名": name[i],
  5. "學院": academy[i],
  6. "專業": major[i],
  7. "開始時間": begin_date[i],
  8. "結束時間": end_date[i]
  9. }

選定模板,

  1. tpl = DocxTemplate(zpath+'入學通知書.docx')

渲染替換,將context里的內容寫入word模板中,

  1. tpl.render(context)#渲染替換

保存文件,名字為:**的入學通知書。

  1. tpl.save(file_path+r"\{}的入學通知書.docx".format(姓名[i]))

上述操作重復num(即表格中數據的行數)次,寫完這些就可以在file_path中找到生成的文件啦。

可能出現的錯誤:

  1. 文件名亂碼:可以嘗試把解碼方式換成gbk;
  2. 權限問題:可能是需要讀入的數據文件正在被使用,關閉就行了;
  3. 生成的word文件行數混亂:可以把str.rstrip()寫成str.rstrip(‘\n');
  4. 只能生成同一份word文檔:每渲染一次,就要重新選定模板。

三、總結

通過本次實驗,我們實現了根據模板批量生成含指定數據的word文件,我最開始看代碼時不懂它是用的哪種類型變量接收從csv中讀取的數據,通過打印輸出才知道是Pandas數據類型中的Series,百度后知道它類似于一維數組,可以保存任何數據類型。在后來運行代碼的過程中又不斷地出現各種各樣的錯誤,還都是沒遇到過的。

到此這篇關于Python自動化之批量生成含指定數據的word文檔的文章就介紹到這了,更多相關Python生成含指定數據的word文檔內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/AI_Green/article/details/121477855

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 四虎永久 | 好逼天天有 | 欧美精品成人a多人在线观看 | 教室里的激情电影 | 精彩国产萝视频在线 | 精品91自产拍在线观看99re | 国产精品久久一区 | 成年女人毛片免费观看97 | 奇米白色| 特黄未满14周岁毛片 | 啊啊啊好大好爽视频 | 爱色成人网 | 日韩久久精品 | 青青草原免费在线视频 | 日韩毛片免费线上观看 | 日韩亚洲国产欧美精品 | 天美影视文化传媒mv免费 | 美女禁区视频免费观看精选 | 公园暴露娇妻小说 | 国产精品亚洲综合第一区 | 99久久综合给久久精品 | 大学生宿舍飞机china free | 四虎新网站 | 高清不卡一区二区 | 91尤物在线 | 久久亚洲成a人片 | 秋霞黄色片| 欧美视频一二三区 | 日韩精品一区二区 | 亚洲欧美日韩另类在线 | 美女靠逼免费网站 | 青青青国产精品国产精品美女 | 国产精品毛片高清在线完整版 | 欧美综合在线 | 草莓丝瓜芭乐樱桃榴莲色多黄 | 亚洲视频在线一区二区 | 日韩色图区 | 日韩精品一区二区三区毛片 | 精品久久久久久亚洲精品 | 午夜伦午夜伦锂电影 | 99久视频 |