【Python_016】把数据写进excel特定单元格

本篇介绍一下如何将数据写进excel特定单元格
适用场景: excel中已做好特定模板,只需填一些空就可以
(如果是要导源数据之类,建议还是直接to_excel/to_csv 比较方便)

粗糙的做了一个模板,如下:
【Python_016】把数据写进excel特定单元格_第1张图片
源数据如下:
【Python_016】把数据写进excel特定单元格_第2张图片
Tips:

  • 先用pandas把数据读到df里
  • 写进excel中利用openpyxl模块
    1. 读取模板用openpyxl.load_workbook
    2. 写值用 ws[‘A1’].value = XXX (A1就是你需要写入值的单元格)
  • 取值时 需要加上iat[0,0],不然会把整个对象(包括dtype:object int64)之类一起写到excel中
  • 时间模块可以用datetime或time

代码如下:

import pandas as pd
import datetime,time
import openpyxl

#读取模板
templ= r"C:\Users\Haley\Desktop\模板.xlsx"
global wb
wb = openpyxl.load_workbook(templ) 
ws = wb['Sheet1']
print('模板已导入')

#读取源数据
data_path = r"C:\Users\Haley\Desktop\data.xlsx"
data = pd.read_excel(data_path)
print('源数据已导入')

#如果源数据里有多个城市可以用这个然后套一个loop 进而有助于生成自动化
#city = data['城市'].drop_duplicates().values.tolist()

ws['B2'].value = '上海'
ws['D2'].value = datetime.datetime.today() #今天的日期

#本周的数字
ws['B7'].value = data[['个数']].loc[data['时间段']=='本周' & data['状态']=='完成'].iat[0,0]
ws['B8'].value = data[['个数']].loc[data['时间段']=='本周' & data['状态']=='待完成'].iat[0,0]
ws['B6'] = ws['B7'].value + ws['B8'].value #总目标

#本月的数字
ws['E7'].value = data[['个数']].loc[data['时间段']=='本月' & data['状态']=='完成'].iat[0,0]
ws['E8'].value = data[['个数']].loc[data['时间段']=='本月' & data['状态']=='待完成'].iat[0,0]
ws['E6'] = ws['E7'].value + ws['E8'].value #总目标

#保存结果到本地
wb.save(r"C:\Users\Haley\Desktop\result.xlsx") 

你可能感兴趣的:(Python,python)