卡卷网
当前位置:卡卷网 / 每日看点 / 正文

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,更简洁,逻辑更严谨。程序无非就是懒成精了,把大量重复的工作交给电脑,还不出错,何乐而不为?

END

免责声明:本文由卡卷网编辑并发布,但不代表本站的观点和立场,只提供分享给大家。

卡卷网

卡卷网 主页 联系他吧

请记住:卡卷网 Www.Kajuan.Net

欢迎 发表评论:

请填写验证码