1 #-*- coding:utf-8 -*-
2 importpandas as pd3 importopenpyxl4 importnumpy as np5 #有以下三种格式的数据,将它们添加进新sheet中以及添加进已有的sheet中
6 list1 = [['张三', '男', '未婚', 20], ['李四', '男', '已婚', 28], ['小红', '女', '未婚', 18], ['小芳', '女', '已婚', 25]]7 list2 = {'name': ['a', 'b'], 'age': [18, 20]}8 list3 = [{'name': 'tf', 'age': 10}, {'name': 'tom', 'age': 18}]9
10 list4 = [['易', '男', '未婚', 20], ['顾', '男', '已婚', 25]]11 list5 = {'name': ['m', 'h'], 'age': [10, 50]}12 list6 = [{'name': 'jerry', 'age': 25}, {'name': 'kk', 'age': 18}]13
14 #--若没使用to_excel可不使用pd.ExcelWriter打开文件,直接用openpyxl.load_workbook
15 #一、 list1-3如何添加进新sheet中且不覆盖原数据
16 #(1)list1类型数据添加进新sheet中
17 excel_read = pd.ExcelWriter(r'C:\Users\Administrator\Desktop\test4.xlsx', engine='openpyxl')18 excel_book =openpyxl.load_workbook(excel_read.path)19 work_sheet = excel_book.create_sheet(title='new_list1') #增加新sheet名
20 data1 = ['姓名', '性别', '婚姻', '年龄'] #表头放入
21 work_sheet.append(data1)22 for i inlist1:23 work_sheet.append(i)24 excel_book.save(excel_read)25
26 #(2)list2类型数据添加进新sheet中
27 #第一种写法:使用to_excel--标题是有边框的
28 excel_read = pd.ExcelWriter(r'C:\Users\Administrator\Desktop\test4.xlsx', engine='openpyxl')29 #若报错:AttributeError: ‘Workbook’ object has no attribute ‘add_worksheet’
30 #修改pd.ExcelWriter(xxx, engine=‘openpyxl’)下述其他代码类似
31 excel_book =openpyxl.load_workbook(excel_read.path)32 excel_read.book = excel_book #有to_excel时这段代码才需要且后面的保存需为excel_read.save()
33 data2 =pd.DataFrame(list2)34 data2.to_excel(excel_read, sheet_name='new_list2', index=False)35 excel_read.save()36
37 #第二种写法:利用numpy拆开字典数据,np.array(..)拆标题、..to_numpy()拆数据,然后分别append进sheet--但是这种拆分是没有格式
38 #(但可以设置格式)