python 操作excel

!!!注意事项

  1. 无论是使用pandas还是xlwt,他们的操作都是不会打开excel的
  2. 如果.save所有的操作都不会生效
  3. 尽量使用后.close不然下一次没法操作
  4. 打开excel后,就没法使用pandas或者xlwt,如果使用的话会报错,说不能同时打开文件,权限禁止
  5. 可以理解pandas操作excel和打开文件操作Excel是两个不同的事情

pandas和openpyxl

"""
Summary:
   (1)padas dataframe生成excel
   (2)excel中增加sheet表
"""
import sys
import pandas as pd
from openpyxl import load_workbook
"""
padas dataframe生成excel
"""
def dataFramesheet(dataframe,excelWriter):
	# DataFrame转换成excel中的sheet表
	dataframe.to_excel(excel_writer=excelWriter, sheet_name="info1",index=None)
	excelWriter.save()
	excelWriter.close()

"""
excel中新增sheet表
"""
def excelAddSheet(dataframe,excelWriter,sheet_name):
	book = load_workbook(excelWriter.path)
	excelWriter.book = book
	dataframe.to_excel(excel_writer=excelWriter,sheet_name=sheet_name,index=None)
	excelWriter.close()


if __name__ == '__main__':
	# excel("111")
	# excel("222")
	# 数据集
	# dataSet = [
	# 	{"姓名": "张三", "年龄": 23, "性别": "男"},
	# 	{"姓名": "李四", "年龄": 25, "性别": "男"},
	# 	{"姓名": "王五", "年龄": 21, "性别": "女"}
	# ]
	dataSet = [
		{"": ""}
	]

	# excelPath
	excelPath = "E:\\test.xlsx"

	# 生成DataFrame
	dataframe = pd.DataFrame(dataSet)

	# 创建ExcelWriter 对象
	excelWriter = pd.ExcelWriter(excelPath, engine='openpyxl')

	# #生成excel
	dataFramesheet(dataframe,excelWriter)

	# excel中增加sheet
	excelAddSheet(dataframe, excelWriter,"11")

	excelAddSheet(dataframe, excelWriter,"22")
	win32api.ShellExecute(0, 'open', excelPath, '', '', 1)

xlrd xlwt 和 xlutils

xlwt负责写
xlrd负责读
xlutilis负责追加写入

import xlrd
import xlutils
import xlwt

def excel(sheet_name):
	# 需求,没有excel时候新建一个,有的时候打开这个excel,新建sheet,sheet里写入内容
	if not os.path.exists("E:\\test.xls"):
		workbook = xlwt.Workbook(encoding='utf-8')  # 新建工作簿
		sheet1 = workbook.add_sheet(sheet_name, 0)  # 新建sheet
		sheet1.write(0, 0, "姓名")  # 第1行第1列数据
		sheet1.write(0, 1, "学号")  # 第1行第2列数据
		sheet1.write(1, 0, "张三")  # 第2行第1列数据
		sheet1.write(1, 1, "036")  # 第2行第2列数据

		workbook.save("E:\\test.xls")  # 保存
		sheet1.write(2, 2, "张三")  # 第2行第1列数据
		sheet1.write(2, 3, "036")  # 第2行第2列数据

		workbook.save("E:\\test.xls")  # 保存
	else:
		# workbook = xlwt.open_workbook("E:\\test.xls")
		# sheets = workbook.sheet_names()  # 获取工作簿中的所有表格
		# sheet1 = workbook.sheet_by_name(sheets[0])  # 获取工作簿中所有表格中的的第一个表格
		# sheet1.write(0, 0, "姓名111")  # 第1行第1列数据
		# sheet1.write(0, 1, "学号111")  # 第1行第2列数据
		# sheet1.write(1, 0, "张三111")  # 第2行第1列数据
		# sheet1.write(1, 1, "036111")  # 第2行第2列数据
		#
		# workbook.save("E:\\test.xls")  # 保存
		# sheet1.write(2, 2, "张三111")  # 第2行第1列数据
		# sheet1.write(2, 3, "036111")  # 第2行第2列数据

		# workbook.save("E:\\test.xls")  # 保存
		oldWb = xlrd.open_workbook("E:\\test.xls")  # 先打开已存在的表
		from xlutils.copy import copy
		newWb = copy(oldWb)  # 复制
		newWs = newWb.get_sheet(0) # 取sheet表
		newWs.write(2, 4, "pass") # 写入 2行4列写入pass
		newWb.save("E:\\test.xls") # 保存至result路径

win32api负责通过句柄操作excel

可以打开excel
通过句柄切换显示excel

# 打开截图留痕excel
win32api.ShellExecute(0, 'open', evidence_file, '', '', 1)
# 等待excel打开,等待时间是不是有点长
sleep(10)
# 获得excel临时文件的句柄
handle = win32gui.FindWindow("XLMAIN", "Microsoft Excel - test_evidence.xls")
# 激活并显示窗口。
win32gui.ShowWindow(handle, win32con.SW_MAXIMIZE)
win32gui.EnableWindow(handle, True)
win32gui.SetForegroundWindow(handle)

如何获取句柄

通过工具WinSpy64.exe

点击图框中位置,移动到需要获取句柄的位置

点击tree,找到想要获取的位置双击,软件中获取class和title即是代码里的FindWindow里的两个写入变量

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值