学习转载
https://www.cnblogs.com/mcgill0217/p/10340013.html
# -*- coding =utf-8 -*-
# @Time : 2021/2/23 16:58
# @Author :Mr
# @File :ReadEt.py
# @Software :PyCharm
import os
import win32com.client
import shutil
import csv
# 获取“我的文档”的路径
import ctypes
from ctypes.wintypes import MAX_PATH
# 读取excel的元组数据转成list
def tolist(data):
data = [list(i) for i in data]
return data
def buf_value():
dll = ctypes.windll.shell32
buf = ctypes.create_unicode_buffer(MAX_PATH + 1)
if dll.SHGetSpecialFolderPathW(None, buf, 0x0005, False):
path = buf.value
else:
print("Failure!")
return path
class ReadEt:
"""处理 Excel 的类"""
__file_name = '' # 定义 文件名
__excel = None # 定义 Excel
__work_book = None # 定义 工作表
__sheet = None
__exists = False # 定义 是否存在
def __init__(self):
"""PyExcel 对象 初始化"""
self.__work_book = None
self.__sheet = None
self.__file_name = ''
# 打开et
self.__excel = win32com.client.Dispatch('ket.Application')
self.__excel.Visible = False # 确定ET是否可见
# self.__newfile = os.path.join(buf_value(), "模板.csv")
# # 打开工作薄
# self.wb = self.et.Workbooks.Open(file_name)
# # 按表名打开工作表
# self.sht = self.wb.Worksheets(sheet_name)
#
def open(self, file_name=''):
"""
打开 Excel文件\n\r
file_name 为绝对路径,否则出错。
"""
if not os.path.exists(os.path.dirname(file_name)):
os.makedirs(os.path.dirname(file_name))
if file_name.strip() == '':
# print(1)
self.__work_book = self.__excel.Workbooks.Add()
elif os.path.dirname(file_name) and not os.path.exists(file_name):
# print(2)
with open('模板.csv', 'w') as f:
f.close()
# shutil.move('模板.csv', '模板.xls')
shutil.move('模板.csv', file_name)
self.__work_book = self.__excel.Workbooks.Open(file_name)
else:
# print(3)
self.__work_book = self.__excel.Workbooks.Open(file_name)
return self.__work_book
def sheet(self, sheet_name='', sheet_index=1):
if sheet_name:
self.__sheet = self.__work_book.Sheets(sheet_name)
else:
self.__sheet = self.__work_book.Sheets(sheet_index)
return self.__sheet
def reset(self):
"""复位"""
self.__work_book = None
self.__file_name = ''
self.__excel = None
self.__exists = False
def save(self)