Python真的有大众说的那么好吗?
作者:卡卷网发布时间:2025-01-17 00:35浏览数量:83次评论数量:0次
运维人,python只是入门水平吧。
有天业务部门让我帮忙,需求是将一个表格里面的数千条数据按行分别导出为PDF。如果我自己一条条干,干一个礼拜都干不完。
那当然是自己想办法解决喽,查了下,python正好内嵌了工具类能处理我的需求,于是乎找到文档自己开写。
由于不熟练,连循环咋写都得查文档,不过还好大学还剩点编程底子,饶是如此,几行代码也写了一个上午。如下,有类似需求的朋友可以直接在我的基础上改一改。
xlrd类不能直接将Excel表格数据转换成PDF,所以只能先把每行数据提取出来创建成Word保存,再把word文件转换成PDF。
# _*_coding : utf-8
# @Time : 19:56
# @Author : daton
# @File : {NAME}
# @Project : {PROJECT_NAME}
import xlrd
import docx
from docx.oxml.ns import qn
#设置全局字体
workbook = xlrd.open_workbook(filename=r'D:\huaan.xls') #打开表格''内是文件路径,注意标点符号必须是全英文表格格式必须是.xls
table = workbook.sheet_by_name(sheet_name='Sheet1')#读取全部数据
rows = table.nrows #行
path='D:\jjfl'
#循环获取每行的数据
#for row in range(rows):
row=0
while row<rows:
doc = docx.Document()
jjdm = int(table.cell_value(row,0))
doc.save(r'D:\jjfl\{}.docx'.format(jjdm)) #文件保存的位置
row+=1
row1=0
while row1 < rows:
jjdm = int(table.cell_value(row1, 0))
jjmc = table.cell_value(row1, 1)
tp = table.cell_type(row1, 2)
jjfl = float(table.cell_value(row1, 2))#数据保留为浮点数据。
a = round(jjfl, 3)
file=docx.Document(r'D:\jjfl\{}.docx'.format(jjdm))
doc=docx.Document()
doc.styles['Normal'].font.name = u'宋体'
doc.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
doc.add_paragraph('尊敬的投资者:\n\t您购买的{}基金,产品代码{},客户维护费率为{}%,敬请周知。'.format(jjmc,jjdm,a))
doc.save(r'D:\jjfl\{}.docx'.format(jjdm))
row1 += 1
import os
from docx2pdf import convert
# 目录地址,将'/'替换成需要转换的目录地址就行
file_path = r'D:\jjfl'
# 转换word->pdf
# 查找当前目录下的全部word文件
for dirpath, dirnames, filenames in os.walk(file_path):
for file in filenames:
fullpath = os.path.join(dirpath, file)
print('fullpath:"' + fullpath)
# convert("input.docx", "output.pdf")
convert(fullpath, f"{fullpath}.pdf") # 转换成pdf文件,但文件名是.docx.pdf,需要重新修改文件名
# 修改文件名
for dirpath, dirnames, filenames in os.walk(file_path):
for fullpath in filenames:
if '.pdf' in fullpath:
fullpath_after = os.path.splitext(fullpath)[0]
fullpath_after = os.path.splitext(fullpath_after)[0]
fullpath_after = fullpath_after + '.pdf'
fullpath_after = os.path.join(dirpath + '\\' + fullpath_after)
fullpath = os.path.join(dirpath, fullpath)
os.rename(fullpath, fullpath_after)
如果我精通的话,可能几分钟就写好了,实在是才疏学浅。python好不好我没资格评价,但是相比于java,c++等,在写一些脚本的时候,我更愿意使用python,更简洁,逻辑更严谨。程序无非就是懒成精了,把大量重复的工作交给电脑,还不出错,何乐而不为?
免责声明:本文由卡卷网编辑并发布,但不代表本站的观点和立场,只提供分享给大家。
相关推荐

你 发表评论:
欢迎