为什么Excel处理在打印后仍保持打开状态

问题描述

我使用以下软件包: openpyxl-复制excel模板,打开复制的文件,保存db中的数据,打印然后删除; pywin32-通过网络名称发送到远程网络打印机进行打印;

经过一些过程后,我不知道哪个-excel过程窗口仍然打开。 (附加屏幕截图)

open empty excel window

我在项目功能中使用最多。 这个程序就像一个Web服务,监听5000端口并在所需的模板中打印。 我删除了所有创建的文件,因为不需要存储所有文件

from openpyxl import load_workbook
import os
import app_config as config
import printers.printers as p
from datetime import datetime
import shutil
import time


class EditExcelTemplate:
    def __init__(self,template_name):
        Now = datetime.Now()
        report_name = "_{}{}{}_{}{}{}_{}".format(Now.year,Now.month,Now.day,Now.hour,Now.minute,Now.second,Now.microsecond)
        self.report_path = config.EXCEL_REPORT_PATH.format(template_name +
                                                           report_name)

        shutil.copy(src=config.EXCEL_TEMPLATE_PATH.format(template_name),dst=self.report_path)

        # self.wb = load_workbook(filename=config.EXCEL_TEMPLATE_PATH.format(template_name))
        start_load = time.time()
        self.wb = load_workbook(filename=self.report_path,keep_links=False,keep_vba=False,data_only=True)
        end_load = time.time()
        print('LOAD WORKBOOK|{}'.format(str(end_load - start_load)))
        self.ws = self.wb.active
        self.answer = {'file_name': template_name.upper()}

    def write_workbook(self,row_dest,column_dest,value):
        c = self.ws.cell(row=row_dest,column=column_dest)
        c.value = value


    def save_excel(self):
        self.wb.save(self.report_path)

    def print_excel(self,printer_no):
        p.print_excel(printer_no=printer_no,path_to_file=self.report_path)

    def print_excel_file(self,printer_name):
        p.print_excel_file(printer_name=printer_name,path_to_file=self.report_path)
import win32api
import app_config
import os,time


def print_excel(printer_no,path_to_file):
    printer_name = app_config.PRINTER_NAMES[printer_no]

    win32api.ShellExecute(
        1,'printto',path_to_file,'{}'.format(printer_name),'.',0
    )


def delete_file(path_to_file,try_count=1):
    if os.path.exists(path=path_to_file):
        file_name = path_to_file.split('\\')[-1]
        while try_count < 60:
            try:
                os.remove(path_to_file)
                print('File {} deleted!'.format(file_name))
                break
            except PermissionError:
                print('Can not delete file {}. Hold {} sec.'.format(file_name,try_count))
                time.sleep(1.0)
                try_count += 1

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)