我想在excel每个sheet的底部插入一张jpg,并且将这个sheet打印成“所有列为一页”的pdf,但我无法获取到excel底部的坐标;或者我能否通过获取最底部的单元格,以单元格为坐标进行插入,如果是这样请问该如何操作?
底下附上我的代码,仅供参考,请指点
import os
from win32com.client import Dispatch, constants, gencache, DispatchEx
class PDFConverter:
def __init__(self, pathname, export='.'):
self._handle_postfix = ['xls', 'xlsx'] #'doc', 'docx', 'ppt', 'pptx',
self._filename_list = list()
folder = r'C:\Users\rz\Desktop\新建文件夹\PDF'
self._export_folder = os.path.join(os.path.abspath('.'),folder)
if not os.path.exists(self._export_folder):
os.mkdir(self._export_folder)
self._enumerate_filename(pathname)
def _enumerate_filename(self, pathname):
'''
读取所有文件名
'''
full_pathname = os.path.abspath(pathname)
if os.path.isfile(full_pathname):
if self._is_legal_postfix(full_pathname):
self._filename_list.append(full_pathname)
else:
raise TypeError('文件 {} 后缀名不合法!仅支持如下文件类型:{}。'.format(pathname, '、'.join(self._handle_postfix)))
elif os.path.isdir(full_pathname):
for relpath, _, files in os.walk(full_pathname):
for name in files:
filename = os.path.join(full_pathname, relpath, name)
if self._is_legal_postfix(filename):
self._filename_list.append(os.path.join(filename))
else:
raise TypeError('文件/文件夹 {} 不存在或不合法!'.format(pathname))
def _is_legal_postfix(self, filename):
return filename.split('.')[-1].lower() in self._handle_postfix and not os.path.basename(filename).startswith('~')
def run_conver(self):
'''
进行批量处理,根据后缀名调用函数执行转换
'''
print('需要转换的文件数:', len(self._filename_list))
for filename in self._filename_list:
postfix = filename.split('.')[-1].lower()
funcCall = getattr(self, postfix)
print('原文件:', filename)
funcCall(filename)
print('转换完成!')
def xls(self, filename):
'''
xls 和 xlsx 文件转换
'''
name = os.path.basename(filename).split('.')[0] + '.pdf'
exportfile = os.path.join(self._export_folder, name)
xlApp = DispatchEx("Excel.Application")
xlApp.Visible = False
xlApp.DisplayAlerts = 0
books = xlApp.Workbooks.Open(filename,False)
books.ExportAsFixedFormat(0, exportfile)
books.Close(False)
print('保存 PDF 文件:', exportfile)
xlApp.Quit()
if __name__ == "__main__":
# 支持文件夹批量导入
folder = r'C:\Users\rz\Desktop\新建文件夹'
pathname = os.path.join(os.path.abspath('.'), folder)
pdfConverter = PDFConverter(pathname)
pdfConverter.run_conver()