Au travail ont souvent besoin rencontrés à ouvrir beaucoup tableur Excel, puis la demande combinée, combinée et le format requis doit être authentique réservé. En utilisant le code VBA peut être relativement facile à résoudre, et maintenant nous regardons la façon d'atteindre Python.
Sur le code:
du Cahier d'importation openpyxl de Dispatch d'importation win32com.client import os importation datetime def copy_excel_file (source_file_list, destination_file): run_app = Dispatch ( 'Excel.Application') run_app.Visible = # Faux改为vrai可以看到excel的打开窗口 pour le fichier dans source_file_list: source_workbook = run_app.Workbooks.Open (filename = fichier) destination_workbook = run_app.Workbooks.Open (nom de fichier) = destination_file source_workbook.Worksheets (1) .copy (avant = destination_workbook.Worksheets (1)) destination_workbook.Close (SaveChanges = True) run_app.Quit () classe parameterGenerator: def __init __ (self): # self.directory_path = directory_path self.file_lists = [] def creat_xlsx (self, directory_path): obj = classeur () sinon os.path.exists (directory_path + os.sep + 'rejoint'): os.mkdir (directory_path + os.sep + « rejoint ') date = str (datetime.datetime.today ()) [00:10] obj.save (directory_path + os.sep + 'joint' + os.sep +' rejoint {} .xlsx'.format (date)) def get_file_list (self, directory_path): entry_lists = os.scandir (directory_path) pour entry_list en entry_lists: si entry_list.is_file (): si '~ $' non entry_list.path: self.file_lists.append (entry_list.path) self.file_lists de retour def exécuter (self, directory_path): file_lists = self.get_file_list (directory_path) self.creat_xlsx (directory_path) destination_file = str (self.get_file_list (directory_path + os.sep + 'rejoint') [- 1]) file_lists.pop (-1) file_lists de retour, destination_file si __name__ == "__main__": directory_path = R'D: \ Excel目录» param = parameterGenerator () source_file_list, destination_file = param.run (directory_path) copy_excel_file (source_file_list, destination_file)
La sortie est un nouveau dossier « joint » dossier, un fichier qui a « rejoint xxxx-xx-xx.xlsx » combinée comme suit:
À l'heure actuelle, nous avons trouvé deux problèmes que l'attention nécessaire:
1. La nécessité de fusionner les fichiers ne peuvent pas avoir une forme cachée, sinon, Sauts le fichier;
2. Les noms de fichiers non caractères jeton inattendu, comme les supports et autres.
Enfin, l'interface d'appel un peu lent, ont encore l'occasion de voir ce qui peut être atteint que si openpyxl, ont été le format combiné. xlwings est mise en œuvre similaire, vitesse estimée est presque lent.