复制PPTX内容到excel
from pptx import Presentation
import openpyxl
import os
def list_dictionary_codes(root_dir):
paths_list = []
for parent, dirNames, fileNames in os.walk(root_dir):
for name in fileNames:
ext = ['.pptx']
if name.endswith(tuple(ext)):
paths_list.append(os.path.join(name))
return paths_list
root_dir=r'D:\auto_translate-20200519单机D盘版V2\English_Culture_input\input\\'
mypaths_list=list_dictionary_codes(root_dir)
print(mypaths_list)
translate_file=r"D:\auto_translate-20200519单机D盘版V2\English_Culture_input\\"
translate_outputfile=r"D:\auto_translate-20200519单机D盘版V2\English_Culture_output\\"
wb=openpyxl.load_workbook(translate_file+"input_file.xlsx")
sheet=wb.get_sheet_by_name('翻译')
j=2
for p in range(0,len(mypaths_list)):
word_list=[]
ppt = Presentation(root_dir+mypaths_list[p])
for slide in ppt.slides:
for shape in slide.shapes:
if shape.has_text_frame:
text_frame = shape.text_frame
ppt_text= text_frame.text
ppt_text = ppt_text.replace(u'\xa0', u' ')
ppt_text = ppt_text.replace(u'\x0b', u'')
word_list.append(ppt_text)
print(word_list)
print('读取完毕'+mypaths_list[p])
for i in range(0,len(word_list)):
sheet.cell(row=j, column=1).value=word_list[i]
j=j+1
wb.save(translate_file+"input_PPT内容.xlsx")
wb.close()
print('复制PPTX内容到excel完毕')
print('请打开excel表,删除“空白的行”和“日期的行”,否则会报错')
自制翻译器-金山-百度
import requests,json,openpyxl
from bs4 import BeautifulSoup
def translate_iciba(myword):
url = 'http://fy.iciba.com/ajax.php?a=fy'
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'}
data = {
'f': 'auto',
't': 'auto',
'w': myword,}
translate_request = requests.post(url,headers=headers,data=data)
js_translate=translate_request.json()
mytranslator_iciba=js_translate['content']['out']
print('金山翻译:'+mytranslator_iciba)
return mytranslator_iciba
import hashlib
import random
import openpyxl
from openpyxl import Workbook
import requests
import time
apiurl = 'http://api.fanyi.baidu.com/api/trans/vip/translate'
appid = '***'
secretKey = '***'
def translateBaidu(content, fromLang='auto', toLang='auto'):
time.sleep(0.5)
salt = str(random.randint(32768, 65536))
sign = appid + content + salt + secretKey
sign = hashlib.md5(sign.encode("utf-8")).hexdigest()
try:
paramas = {
'appid': appid,
'q': content,
'from': fromLang,
'to': toLang,
'salt': salt,
'sign': sign
}
time.sleep(1.2)
response = requests.get(apiurl, paramas)
time.sleep(1.2)
jsonResponse = response.json()
dst=[]
for i in range(0,20):
try:
dst_sub = str(jsonResponse["trans_result"][i]["dst"])
dst.append(dst_sub)
except Exception:
pass
dst='\n'.join(dst)
print('百度翻译:'+dst)
return dst
except Exception as e:
print(e)
translate_file=r"D:\auto_translate-20200519单机D盘版V2\English_Culture_input\\"
translate_outputfile=r"D:\auto_translate-20200519单机D盘版V2\English_Culture_output\\"
wb=openpyxl.load_workbook(translate_file+"input_PPT内容.xlsx")
sheet=wb.get_sheet_by_name('翻译')
rows=sheet.max_row
for i in range(2,rows+1):
myword=sheet.cell(row=i, column=1).value
sheet.cell(row=i, column=3).value=myword
sheet.cell(row=i, column=2).value=translate_iciba(myword)
sheet.cell(row=i, column=4).value = translateBaidu(myword)
wb.save(translate_outputfile+"output_金山翻译.xlsx")
wb2=openpyxl.load_workbook(translate_outputfile+"output_金山翻译.xlsx")
sheet2=wb2.get_sheet_by_name('翻译')
rows2=sheet2.max_row
print('检查百度翻译是否有空值')
for j in range(15):
time.sleep(1)
for i in range(2,rows2+1):
while sheet2.cell(row=i, column=4).value == None:
myword=sheet2.cell(row=i, column=1).value
sheet2.cell(row=i, column=4).value = translateBaidu(myword)
wb2.save(translate_outputfile+"output_金山翻译.xlsx")
wb2.close()
print('翻译导出Ok')
补充百度翻译
import requests,json,openpyxl
from bs4 import BeautifulSoup
import hashlib
import random
import openpyxl
from openpyxl import Workbook
import requests
import time
apiurl = 'http://api.fanyi.baidu.com/api/trans/vip/translate'
appid = '***'
secretKey = '***'
def translateBaidu(content, fromLang='auto', toLang='auto'):
time.sleep(0.5)
salt = str(random.randint(32768, 65536))
sign = appid + content + salt + secretKey
sign = hashlib.md5(sign.encode("utf-8")).hexdigest()
try:
paramas = {
'appid': appid,
'q': content,
'from': fromLang,
'to': toLang,
'salt': salt,
'sign': sign
}
time.sleep(1.2)
response = requests.get(apiurl, paramas)
time.sleep(1.2)
jsonResponse = response.json()
dst=[]
for i in range(0,20):
try:
dst_sub = str(jsonResponse["trans_result"][i]["dst"])
dst.append(dst_sub)
except Exception:
pass
dst='\n'.join(dst)
print('百度翻译:'+dst)
return dst
except Exception as e:
print(e)
translate_file=r"D:\auto_translate-20200519单机D盘版V2\English_Culture_input\\"
translate_outputfile=r"D:\auto_translate-20200519单机D盘版V2\English_Culture_output\\"
wb2=openpyxl.load_workbook(translate_outputfile+"output_金山翻译.xlsx")
sheet2=wb2.get_sheet_by_name('翻译')
rows2=sheet2.max_row
print('检查百度翻译是否有空值')
for j in range(10):
time.sleep(1)
for i in range(2,rows2+1):
while sheet2.cell(row=i, column=4).value == None:
myword=sheet2.cell(row=i, column=1).value
sheet2.cell(row=i, column=4).value = translateBaidu(myword)
wb2.save(translate_outputfile+"output_金山翻译.xlsx")
wb2.close()
print('翻译导出Ok')
将翻译结果生产PPT
from pptx import Presentation
from pptx.util import Pt
import pptx
import openpyxl
translate_file=r"D:\auto_translate-20200519单机D盘版V2\English_Culture_input\\"
translate_outputfile=r"D:\auto_translate-20200519单机D盘版V2\English_Culture_output\\"
prs = Presentation(translate_file+'公司PPT:input-WT.pptx')
wb=openpyxl.load_workbook(translate_outputfile+'output_金山翻译.xlsx')
sheet=wb.get_sheet_by_name('翻译')
rows=sheet.max_row
slide = prs.slides[0]
tf = slide.shapes.placeholders[1].text_frame
tf.text=sheet.cell(row=1, column=3).value
for j in range(2,rows+1):
bullet_slide_layout = prs.slide_layouts[1]
slide = prs.slides.add_slide(bullet_slide_layout)
tf = slide.shapes.placeholders[1].text_frame
tf.text = sheet.cell(row=j, column=3).value
tf.level = 0
prs.save(translate_outputfile+'output:英语文化墙.pptx')
print('PPTX导出成功')