excel

#coding:utf-8
from win32com.client import Dispatch
import os

class Excel:
    '''
    def __init__(self):                     这里只定义,以及是否可见,是否显示警告
    初始化属性 xls
    def __open_new(self, filename = None)   私有函数,打开一个文件,或新建
    def get_workbooks(self, filename ='')   获得工作薄  目标文件已打开切 换到 目标文件,未打开则 新建 目标文件,无目标文件则 新建 空文件
    初始化属性  xlBook     filename      rows      cols        xlbk_name
    def close(self):                        退出
    def save(self, newfilename=None):       保存
    '''
    xlBook = ''            #this is the cur workbook
    filename = ''          #the full path of the file
    sht_name = ''          # the name of the current worksheet
    xlbk_name = ''              #the name of the workbook
    rows = ''              #the row number is
    cols = ''              #the col number is

    # 初始化excel应用程序对象,和变量
    # 无参数
    def __init__(self):
        self.xls = Dispatch("Excel.Application")
        self.xls.Visible = 1
        self.xls.DisplayAlerts = 0  # 后台运行,不显示,不警告

    # 打开文件或者新建文件(如果不存在的话)
    def __open_new(self, filename = None):
        if os.path.isfile(str(filename)) is True:
            self.filename = filename
            xlBook = self.xls.Workbooks.Open(filename)

        else:
            xlBook = self.xls.Workbooks.Add()

        self.xlBook = xlBook
        self.xlbk_name = xlBook.name.split('.')[0]
        self.get_cols()
        self.get_rows()

    def save(self, newfilename=None):  # 保存文件
        if newfilename:
            self.filename = newfilename
            self.xlBook.SaveAs(newfilename)
        else:
            self.xlBook.Save()

    def close(self):  # 关闭文件
        self.xlBook.Close(SaveChanges=0)
        del self.xls

    def get_workbooks(self, filename =''):

        if os.path.isfile(filename):      #如果输入的是正确的文件路径则:
            #获得文件名带csv后缀
            name = os.path.split(filename)[1]
            for i in self.xls.workbooks:  #获得已打开的工作薄
                if i.name == name:          #如果当中有打开的
                    xlBook = i
                    xlbk_name = i.name.split('.')[0]

            else:  #检测是否已设置xlBook变量,不存在则打开文件
                exists = 'xlBook' in locals().keys()
                if exists:
                    pass  #print(locals().keys())
                else:
                    self.__open_new(filename)

        else:  #不是文件的情况
            if filename == '':  #如果没有输入,则只显示当前打开的文件和路径
                for i in self.xls.workbooks:
                    print(i.name)
                    print(i.fullname)
                self.__open_new()
            else:  #不是空
                for i in self.xls.workbooks:  #检测是否已打开
                    if i.name == filename:
                        xlBook = i
                        xlbk_name = i.name.split('.')[0]
                else:       #检测是否找到文件名,没有则提示出错
                    exists = 'xlBook' in locals().keys()
                    if exists:
                        pass  #print(locals().keys())
                    else:
                        print('the name is Error, retry again')

        exists = 'xlBook' in locals().keys()

        if exists:
            self.xlBook = xlBook
            self.filename = xlBook.fullname
            self.xlbk_name = xlbk_name
            self.get_cols()
            self.get_rows()

    # *****************************************************************************
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值