使用Python模块win32com.client运行Excel,进行Python版VBA编程(一)

示例如下:

# -*- coding: utf-8 -*-

import xlrd
from xlwt import *
from openpyxl import load_workbook
from win32com.client import Dispatch

import win32com.client
import win32api
import os

class ExcelHelper:
    def __init__(self, filename=None):
        self.xlApp = win32com.client.Dispatch('Excel.Application')
        self.xlApp.Visible  = True #是否可视化编辑
        self.xlApp.ScreenUpdating = True#画面刷新显示
        self.xlApp.DisplayAlerts = True
        if filename:
            self.filename = filename
            if os.path.exists(self.filename):
                self.xlBook = self.xlApp.Workbooks.Open(filename)
            else:
                self.xlBook = self.xlApp.Workbooks.Add()
        else:
            self.xlBook = self.xlApp.Workbooks.Add()
            self.filename = 'Untitle'

    def saveAs(self, newfilename=None):
        if newfilename:
            self.filename = newfilename
        self.xlBook.SaveAs(self.filename)

    def save(self):
        self.xlBook.Save()
    def close(self,Save=False):
        self.xlBook.Close(SaveChanges=Save)
        self.xlApp.Quit()
        del self.xlApp


    def copySheet(self,sheetname, before):
        "copy sheet"
        shts = self.xlBook.Worksheets
        shts(sheetname).Copy(None, shts(sheetname))

    def newSheet(self, newSheetName):
        sheet = self.xlBook.Worksheets.Add()
        sheet.Name = newSheetName
        sheet.Activate()

    def activateSheet(self, sheetName):
        self.xlBook.Worksheets(sheetName).Activate()

    def activeSheet(self):
        return self.xlApp.ActiveSheet

    def getCell(self, row, col, sheet=None):
        "Get value of one cell"
        if sheet:
            sht = self.xlBook.Worksheets(sheet)
        else:
            sht = self.xlApp.ActiveSheet
        return sht.Cells(row, col).Value

    def setCell(self, row, col, value, sheet=None):
        "set value of one cell"
        if sheet:
            sht = self.xlBook.Worksheets(sheet)
        else:
            sht = self.xlApp.ActiveSheet

        sht.Cells(row, col).Value = value

    def getRange(self, row1, col1, row2, col2, sheet=None):
        "return a 2d array (i.e. tuple of tuples)"
        if sheet:
            sht = self.xlBook.Worksheets(sheet)
        else:
            sht = self.xlApp.ActiveSheet
        return sht.Range(sht.Cells(row1, col1), sht.Cells(row2, col2)).Value

    def mergeCell(self, row1, col1, row2, col2, sheet=None):
        #单元格合并
        if sheet:
            sht = self.xlBook.Worksheets(sheet)
        else:
            sht = self.xlApp.ActiveSheet
        return sht.Range(sht.Cells(row1, col1), sht.Cells(row2, col2)).Merge()

    def rowsCount(self):
        "return used rows count"
        sht = self.activeSheet()
        return sht.UsedRange.Rows.Count




if __name__ == "__main__":
    execl_filename = r'C:\Users\H\Desktop\execlopen\test.xlsx'
    # workbook = xlrd.open_workbook(execl_filename)
    # print(workbook.sheet_names()) #打印所有sheet
    # table = workbook.sheets()[0]  # 打开第一张表
    # print(table.nrows)  # 打印表的行数   nrows = table.nrows
    # xl.DisplayAlerts = 0


    xl = ExcelHelper(filename=execl_filename)
    """
    显示当前工作簿中的所有sheet
    """
    print(f"sheet number:{xl.xlBook.Worksheets.Count}")#sheet数量
    for i in range(1,xl.xlBook.Worksheets.Count + 1):#遍历所有sheet 并打印sheet的name
        sh = xl.xlApp.Worksheets(i)
        print(sh.Name)

    """
        复制一个sheet
    """
    sheetName = "Sheet1"

    # xl.copySheet(sheetName,sheetName)#复制Sheet1 放在sheet1后面 #方法1

    sheetCopySrcName = "Sheet2"#复制sheet1所有内容到sheet2
    # xl.xlBook.Worksheets(sheetName).Copy()
    # xl.xlBook.Worksheets(sheetCopySrcName).Paste()


    '''
    匹配单元格内容
    '''
    sheet = 'Sheet1'
    ret = xl.xlBook.Worksheets(sheet).UsedRange.Find("0x0001")#匹配单元格内容 寻找单元格内容为0x0009的单元格 若无则返回None
    if ret != None:
        print(f"row:{ret.row},col:{ret.Column}")
    else:
        print("Not Find")


    """
    复制单元格内容
    """
    sheet1 = 'Sheet1'
    sheet2 = 'Sheet2'
    sht = xl.xlBook.Worksheets(sheet1)
    xl.xlBook.Worksheets(sheet1).Activate()
    sht.Range(sht.Cells(11,2),sht.Cells(11,5)).Select()#选择单元格(11,2)->(11,5)的内容进行复制
    xl.xlApp.Selection.Copy()#复制选中内容

    sht = xl.xlBook.Worksheets(sheet2)
    sht.Activate()
    sht.Range(sht.Cells(11,2),sht.Cells(11,5)).Select()#选择单元格(11,2)->(11,5)的内容进行粘贴
    xl.xlApp.ActiveSheet.Paste()
    xl.close(Save=True)
    pass
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要在Python中安装win32com.client,可以按照以下步骤操作: 1. 首先,确保你已经安装了Python。如果没有,请先下载并安装Python。 2. 打开命令提示符或终端窗口。 3. 输入以下命令来安装pywin32模块: pip install pywin32 4. 安装完成后,你就可以在Python使用win32com.client模块了。 希望这可以帮助你安装win32com.client模块。 ### 回答2: Python是一种高级编程语言,广泛应用于数据科学、机器学习和人工智能等领域。在很多实际场景中,我们需要使用Python来读写Office文档,自动化处理Excel表格,或者操作Outlook邮件等。要实现这些功能,需要使用Win32com库,它提供了Python与微软COM组件之间的互操作接口。 Win32com库是Python的一个扩展库,因此安装该库需要遵循一定的步骤。接下来,我将介绍如何安装PythonWin32com.library: 第一步:安装Python使用PythonWin32com库,首先我们需要安装Python本身。可以从官网下载Python并安装。 第二步:安装pywin32 在安装Win32com之前,我们需要安装Python的pywin32库,下载该库的链接为:https://github.com/mhammond/pywin32/releases 根据系统本选择对应的pywin32下载。例如,如果你使用的是Python3.8并且是64位Windows系统,则需要下载pywin32-300.win-amd64-py3.8.exe安装文件。 安装完毕后,在命令行中执行以下命令,以确认pywin32已被正确添加到Python环境中: ```python import win32com.client as win32 win32.client ``` 如果上述代码没有抛出异常,则说明pywin32已被正确安装。 第三步:安装Microsoft Office 默认情况下,PythonWin32com库只支持Office 2000或更高本。因此,如果你使用的是旧Office或没有安装Office,则需要安装Office并确保可从Python环境下访问它。 第四步:使用Win32com 在安装并配置好Win32com库之后,你就可以使用它与Microsoft Office进行交互。例如,为了使用Python自动发送Outlook邮件,你可以使用以下代码: ```python import win32com.client as win32 # 创建一个Outlook应用实例 outlook = win32.Dispatch('outlook.application') # 创建一个新邮件 mail = outlook.CreateItem(0) # 设置邮件体 mail.To = '收件人地址' mail.Subject = '邮件主题' mail.Body = '邮件正文' # 添加附件 attachment = "附件路径" mail.Attachments.Add(attachment) # 发送邮件 mail.Send() ``` 总之,PythonWin32com库可以让你更方便地与Microsoft Office进行交互。只需按照上述步骤安装和配置,即可开始使用它。 ### 回答3: Win32com.clientPython中用于访问COM组件的模块,它可以让我们在Python中直接使用COM的功能来完成各种任务。 Python安装win32com.client的过程并不复杂,只需要按照以下步骤即可: 第一步:下载安装包 在Python的官方网站,我们可以找到相应的win32com.client安装包,下载对应本的安装包即可。 第二步:安装 双击下载好的安装包,按照向导进行安装即可。在安装过程中,需要注意勾选“Add Python 3.x to PATH”选项,以便在安装完成后可以直接在命令行中使用python命令。 第三步:测试 安装完成后,可以使用以下方法测试win32com.client是否已经成功安装: 首先,在命令行中输入python命令,并执行以下代码: ```python import win32com.client ``` 如果没有错误提示,则说明安装成功。如果出现错误提示,可能是由于没有正确安装或者Python本不匹配等原因,可以重新安装或者更换Python进行测试。 总之,安装win32com.client并不需要太多的技术难度,按照上述步骤进行操作即可。在日常开发中,如果需要用到COM组件的功能,不妨尝试使用win32com.client加速开发过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值