使用数据透视表更新excel文件与pandas

我正在尝试用pandas来更新现有的Excel文件。

这个文件有几张纸:

  • 包含原始数据的工作表。 这是我想要从Pandas中导出的​​数据
  • 使用包含数据透视表的原始数据的多个工作表。

我使用此代码来更新Excel文件的第一张,但保留其他表:

disq_df = pd.DataFrame(disqualifications) writer = pd.ExcelWriter(args.output, engine='openpyxl') if os.path.exists(args.output): f, ext = os.path.splitext(args.output) shutil.copyfile(args.output, f + "-saved" + ext) writer.book = load_workbook(args.output) writer.sheets = dict((ws.title, ws) for ws in writer.book.worksheets) disq_df.to_excel(writer, sheet_name=args.sheet) writer.save() 

这大多工作正常(只有第一张被修改),除了其他工作表上的枢轴表实际上是标准单元格。 我也在一些表单上也显示了graphics,这些图表也是消失的。

有没有办法保持这些表完全没有修改? 或者它是一个限制的openpyxl

这是表格的摘录: https : //www.dropbox.com/s/dd3jhiif93knh26/Disqualifications.xlsx?dl=0 。

相应的disq_df数据disq_df只是从disq_df构build而成:

 disq_df = pd.DataFrame({'Année naissance': {0: 2005, 1: 2006}, 'Catégorie': {0: 'Poussin', 1: 'Poussin'}, 'Club': {0: "CERCLE NAGEURS D'ANTIBES", 1: "CERCLE NAGEURS D'ANTIBES"}, 'Compétition': {0: 'Natathlon poussins N° 2', 1: 'Natathlon poussins N° 2'}, 'Date': {0: '2016-02-27 15:17:00', 1: '2016-02-27 15:49:50'}, 'Disqualification': {0: 'DSQ Vi', 1: 'DSQ Ni'}, 'Disqualification (libellé)': {0: 'Disqualifié pour Virage incorrect', 1: 'Disqualifié pour Nage incorrecte'}, 'Ligne': {0: 2, 1: 1}, 'Nage': {0: 'Nage Libre', 1: 'Dos'}, 'Nage (Complet)': {0: '400 Nage Libre Messieurs', 1: '50 Dos Dames'}, 'Niveau': {0: 'Compétitions Départementales', 1: 'Compétitions Départementales'}, 'Sexe': {0: 'M', 1: 'F'}, 'Série': {0: 1, 1: 3}}) 

Openpyxl无法轻松处理样式和graphics。 请参阅使用openpyxl编辑Excel2007文件(.xlsx)而不更改其自己的样式?

它给你的链接,告诉你如何使用win32com来做到这一点。

你也可以尝试xlwings一些基本的操作。 我相信他们都要求你不幸地安装了Excel。

根据这个: https : //openpyxl.readthedocs.org/en/2.3.3/#installation你还需要安装枕头($ pip install pillow)