加上判断 使用win32写入的数据子表名称为货机数据,如果这个子表数据存在就覆盖原表
时间: 2024-03-27 19:34:53 浏览: 81
快递行业4月份数据点评:行业增速超预期,继续推荐韵达股份.pdf
好的,以下是修改后的代码:
```python
import pandas as pd
import win32com.client as win32
# 读取散航发货结算按供应商导出.xlsx中指定列的数据
df = pd.read_excel("散航发货结算按供应商导出.xlsx", usecols=["结算账期", "结算网点代码", "发货日期"])
# 将日期格式转换为yyyy-mm格式
df["发货日期"] = df["发货日期"].dt.strftime("%Y-%m")
# 使用win32打开场地效益看板.xlsm数据表
excel = win32.gencache.EnsureDispatch("Excel.Application")
workbook = excel.Workbooks.Open(r"场地效益看板.xlsm")
# 判断货机数据子表是否存在,如果存在则删除
for sheet in workbook.Sheets:
if sheet.Name == "货机数据":
sheet.Delete()
# 将pandas读取的数据写入场地效益看板中
worksheet = workbook.Worksheets.Add()
worksheet.Name = "货机数据"
cell_range = worksheet.Range("A1:C" + str(len(df) + 1)) # 包含列标题的单元格范围
cell_range.Value = df.values # 将数据写入单元格范围
# 设置单元格居中
cell_range.HorizontalAlignment = win32.constants.xlCenter
# 设置日期格式为yyyy-mm
date_format = "yyyy-mm"
worksheet.Range("C2:C" + str(len(df) + 1)).NumberFormat = date_format
# 保存并关闭Excel表格
workbook.Save()
workbook.Close()
excel.Quit()
```
这个程序会在写入数据之前先判断"货机数据"子表是否存在,如果存在则删除,然后再创建新的子表并将数据写入其中。请注意,这里删除子表的操作将会直接删除原有数据,请谨慎操作。
阅读全文