常见 win32.com 操作

2023-05-16

import win32com.client
from win32api import RGB

xlapp = win32com.client.gencache.EnsureDispatch("Ket.Application")
xlapp.Visible = False
xlapp.DisplayAlerts = False

path =""
xlwb = xlapp.Workbooks.Open(Filename=path, UpdateLinks=0, ReadOnly=False, Format=None, Password="",WriteResPassword="")
xlws = xlwb.Worksheets(1)
# 获取行数
rows = xlws.UsedRange.Rows.Count
# 获取列数
cols = xlws.UsedRange.Columns.Count
# 输出工作簿的所有sheet页的名称
print([i.Name for i in xlwb.Worksheets])
# 激活sheet2
xlapp.Worksheets("Sheet2").Activate()
# 给单元格A1赋值
xlws.Range("A1").Value="hello"
# 单元格格式设置
xlws.Rows(2).NumberFormatLocal = "@"  # 设置单元格为文本格式
xlws.Columns(2).NumberFormatLocal = "yyyy/mm/dd"  # 设置单元格格式为yyyy/mm/dd
# 网格线
xlws.Rows(5).Borders.LineStyle = 1  # 某行设置网格线
xlws.Range("A9:B12").Borders.Color=3  # 往某个区域内添加网格线
# 对齐方式
xlws.Rows(1).HorizontalAlignment = -4103  # 某行居中对齐xlCenter
# 背景颜色
xlws.Cells(1,1).Interior.Color=13408767  # 设置背景色为粉底
xlws.Range("A1").Interior.ColorIndex=3
xlws.Cells(1,1).Interior.Color=RGB(123,22,123)
# 字体设置
xlws.Cells(1,2).Font.Color=3  # 字体颜色
xlws.Cells(1,2).Font.Size=15  # 字体大小
xlws.Cells(1,2).Font.Bold=True  # 字体格式(粗体)
xlws.Cells(1,2).Font.Name="Arial"  # 字体名称
xlws.Cells(1,1).Font.ColorIndex=3
xlws.Cells(1,1).Font.Color=RGB(0,0,255)
# 为某单元格写入公式,也可覆盖原有的公式
xlws.Range("A1").Formula = '=COUNTIF(J15:J1424,"X")+COUNTIF(J15:J1424,"O")'
# 根据函数公式,计算一列的数据总和
print(xlapp.WorksheetFunction.Sum(xlws.Columns(11)))
# data_tuple为数据的元组形式,每一行为一个元组,即((第一行),(第二行)),可通过下标取值
data_tuple = xlws.UsedRange.Value
print(data_tuple[15]) # 输出第16行数据
# 按指定单元格排序,Order1=1为升序,2为降序
xlws.Range("H2:J14").Sort(Key1=xlws.Range("H1"),Order1=1,
                              Key2=xlws.Range("I1"),Order2=2,
                              Key3=xlws.Range("J1"),Order3=1,
                              Orientation=1)
# 指定查找,如在A列中查找200,可以在后面加上Row,Column来返回所在行,列,其中LookAt=1表示准确匹配,LookIn=-4163表示匹配值
row = xlws.Range("A:A").Find(What="1*",LookAt=1,LookIn=-4163).Row
# 刷选
xlws.Range("A1").AutoFilter(field=5,Criterial="<>同事")
# Criteria1 =空白字段  <>查找非空白字段 ><选择数据类型中的(否数据)字段
# 筛选过后,可见的第2列的数据
xlws.Columns(2).SpecialCells(12)
# 筛选出来的结果中,一列数据的总和
xlapp.WorksheetFunction.Sum(xlws.Columns(2).SpecialCells(12))
# 清除筛选条件
xlws.ShowAllData()
# 选择范围,从第二行到最下面不为空的行
xlws.Range(xlws.Rows(2),xlws.Rows(2).End(-4121)).Select()

# 获取“职务”列的列号
col = xlws.Rows(1).Find("职务").Column
# 删除筛选出来的内容,其中SpecialCells(12)为可见的,即在指定范围内对被筛选出来的可见的内容进行删除
xlws.Range(xlws.Cells(2,col), xlws.Cells(rows,col).End(-4121)).SpecialCells(12).ClearContents()


# 指定单元格添加注释
# comment = "哈哈"
# a = xlws.Range("A4").Comment.Text()
# if not a:
#     xlws.Range("A4").AddComment(comment)
# 判断是否已经添加批注
# if xlws.Range("A4").Comment:
#     print("存在")
# else:
#     print("不存在")
# 在原批注上追加信息
# a = xlws.Range("A4").Comment.Text()
# print(a)
# xlws.Range("A4").Comment.Text(a +"嘻嘻")

# 复制
# xlws.Range("A2:B9").Copy()  # 复制某个范围
# xlws.Rows(3).Copy()  # 复制某行
# xlws.Range(xlws.Columns(2),xlws.Columns(4)).Copy()  # 复制第2列到第4列
# xlws.Range(xlws.Cells(1,1),xlws.Cells(1,5)).Copy() # 复制单元格A1到A5
# xlws.Range(xlws.Range("A:A"),xlws.Range("C:C")).Copy()  # 复制第A列到第C列
# 复制的内容粘贴到xlws的Range
# xlws.Paste(xlws.Range("A23:B30"))

# 选择性粘贴值
# xlws.Range("A1:C10").Copy()  # 复制范围
# xlws.Cells(6,1).PasteSpecial(-4163)  # 粘贴至某个单元格,会自动填充单元格

# 数值覆盖,相当于选择性数值粘贴,会覆盖公式
# xlws.Range('F7').Value=xlws.Range('E7').Value # 数值
# 选择性粘贴,一块区域
# xlws.Range('B12:D20').Value=xlws.Range('B1:D9').Value

# 剪切插入(能够自动换行)
# xlws.Range("A1:D1").Cut()
# xlws.Rows(5).Insert()  # 在指定行前插入


# 删除某行
# xlws.Rows(1).Delete()
# 删除某列
# xlws.Columns(1).Delete()
# xlws.Range("A:A").Delete()
# 清除所有内容,包括格式,外边框,颜色等
# xlws.Range("A1:B5").Clear()
# 只清除单元格内容
# xlws.Range("A1:B5").ClearContents()
# xlws.Rows(2).ClearContents() # 清除第二行单元格内容

# 删除sheet页
# xlws.Worksheets(("AA","BB","CC"),).Delete()
# xlws.Worksheets(["混混","啦啦"]).Delete()
# 在当前sheet页前,新增sheet页
# xlws.Worksheets.Add().Name = "haha"
# 在指定的sheet页前面插入新的sheet页
# xlws.Worksheets.Add(xlws.Worksheets("haha")).Name = "gg"

# 默认方式自动填充,对指定区域中的单元格进行自动填充
# xlws.Range("A1").AutoFill(Destination=xlws.Range("A1:A10"),
#                               Type=wc.constants.xlFillDefault)


# 分列
# xlws.Range("B1:B10").TextToColumns(Destination=xlws.Range("B1"),
#                                        DataType=wc.constants.xlDelimited,
#                                        TextQualifier=wc.constants.xlDoubleQuote,
#                                        ConsecutiveDelimiter=True,
#                                        Tab=True,
#                                        Space=True,
#                                        TrailingMinusNumbers=True)


# 合并,Across:True行 False列
# xlws.Range("H3:K10").Merge(Across=True)  # 行合并
# xlws.Range("H3:I6").Merge(Across=False)  # 列合并
# col = xlws.Rows(1).Find("A").Column  # 所在列数
# 读取合并的单元格,从当前选择单元格算起
# print(xlws.Cells(1,col).MergeArea.Cells(3, 1))
# print(xlws.Range("H3:I6").MergeCells) # 判断是否是合并的单元格
# xlws.Cells(3,col).HorizontalAlignment = -4108  # 某行水平居中对齐xlCenter
# xlws.Cells(3,col).VerticalAlignment = -4108  # 某行垂直居中对齐xlCenter


# 复制公式下拉操作
xlws.Range("H2:L2").Copy()
last_row = xlws.Range("A1").End(-4121).Row  # 获取A列的最后一行的行数
xlws.Paste(xlws.Range("H2:L{}".format(last_row)))

# G列为数字
xlws.Range("P1").Copy()  # 复制一个单元格
xlws.Range("G:G").PasteSpecial(Paste=-4163,Operation=2,SkipBlanks=False,Transpose=False)  # 相加转化为数字

# 1.保存
xlwb.Save()
# 2.另存为,第一个为保存路径,要加上文件名称,第二个为文件格式,第三个为打开密码,第四个为修改密码
xlwb.SaveAs(Filename=path,FileFormat=None,Password='0000',WriteResPassword='0000')
# 3.关闭excel工作簿
xlwb.Close()
# 4.退出Excel应用
xlapp.Quit()


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

常见 win32.com 操作 的相关文章

  • 在 Win 10 中调试卸载 DLL 时发生崩溃,但在 Win 7 中则不然

    不完全确定我已经解决了这个问题 但这就是我所看到的和我所看到的think正在进行 我有一个主要用 C 编写的 Win32 程序 用于加载 C DLL 该 DLL 通过 COM 对象 可能由 DLL 本身实例化的对象 将数据从 C 程序传递到
  • .NET 中的 CoCreateInstance 完全匹配吗?

    我有进程内 DLL COM 服务器 但我选择以 DllSurrogate 身份运行 因此从非托管代码 Delphi 中我有 function TComWrapper GetServer IUnknown begin OleCheck CoC
  • 当传递 VBA 类的实时实例时,C# ITypeInfo.GetContainingTypeLib 失败

    所以我尝试过打电话ITypeInfo在 VBA 类实例上 虽然它看起来很有希望 但我想看看是否可以获得对其包含项目 类似于类型库 的引用 我想ITypeInfo GetContainingTypeLib可能有用 但它会抛出一个异常 表明 V
  • “班级未注册”是哪个班级?

    考虑这段代码 try ISomeObject pObj uuidof SomeClass ISomeObject pObj2 uuidof SomeOtherClass catch com error e Log what failed I
  • 如何使用 ClickOnce 安装 COM

    我已经安装了使用 TeeChart ActiveX COM 使用 ClickOnce 绘制图表的组件 如果我使用 regsvr32 teechart8 ocx 手动注册 TeeChart 我的 应用程序工作正常 但我想要并且需要使用安装应用
  • C# - 检索 COM+ 组件的属性?

    我的服务器 Windows Server 2003 上有一个 COM 组件 有什么方法可以以编程方式检索该组件的属性 例如使用的构造函数字符串 当我转到管理工具 gt 组件服务 gt COM 应用程序并右键单击我的组件时 这些是我希望能够检
  • 基于非零的多维数组

    我正在使用以下命令从电子表格中提取单元格Interopt ExcelAPI 当我打电话时 object rangeValues object range get Value XlRangeValueDataType xlRangeValue
  • 如何正确使用和实例化现有预览处理程序

    我正在尝试使用现有的预览处理程序来显示文件的预览 我编写了一个简单的测试程序 以 1 查找给定文件的预览处理程序的 CLSID 2 实例化预览处理程序 3 通过流或文件初始化它 4 在基本窗口上渲染预览 这有效 或多或少 It works
  • 我刚刚在 Visual Basic 中运行的 COM 对象的 CLSID 是什么

    我需要知道我刚刚运行的 COM 对象的 CLSIDCreateObject xxx xxx 我怎么才能得到它 蒂亚 拉法尔 我认为您无法直接从 VB 本身获取该信息 例如 作为调用的副作用或次要结果 CreateObject 但你可以阅读注
  • .NET 组件和 COM 组件有什么区别

    NET 组件和 COM 组件之间有什么区别 有时我们使用 NET 组件包含在我们的项目中 有时我们包含 COM 引用 背后的想法是什么 NET 组件是托管代码 内存处理已为您完成 COM http en wikipedia org wiki
  • 我应该选择哪个 VC++ 运行时版本 - 静态还是动态?

    我正在开发一个 64 位进程内 VC ATL COM 服务器 它基本上只是将所有调用重定向到进程外 COM 服务器 所以我的COM服务器基本上什么都不做 最初它在 DLL 中使用 C 运行时 MD编译器开关 我注意到当我在干净的 64 位
  • COM多线程支持

    第一次使用COM我有这个 COM dll 比如 ABCServer dll 我创建了一个 RCW 并在我的项目中添加了对它的引用 现在 我的应用程序创建了多个线程 每个线程从 COM dll 创建某些类并使用它们 但是 当其他线程正在处理
  • 以编程方式确定是否安装了 COM 库 (.DLL)

    C 中是否有一种编程方式来确定是否已安装特定的 COM DLL 或者这是扫描注册表中的 classId 的问题 我通常所做的 如果我再次需要的话也会这样做 是尝试创建一个您知道位于 COM 库中的类的对象实例 通过 ProgID 或 GUI
  • 在 C++ 中不使用 CLSID 和注册表即可获取 COM 对象的 DLL 文件

    是否可以在不使用 CLSID 和注册表查找的情况下获取已加载 COM 对象的 DLL 文件名 我有一个IUnknown或者就我而言IBaseFilter接口指针 现在我想获取创建此 COM 对象的 DLL 文件名 我可以使用对象点地址来反向
  • *.tlb 文件在运行时使用过吗?

    我正在开发一个通过 COM 互操作公开一些 NET API 的产品 作为构建的一部分 我们为所有此类程序集生成 tlb 文件 并将它们作为单独 SDK 包的一部分提供 我们的客户可以在我们的产品之上安装 SDK 并创建使用我们的 COM A
  • PowerShell 中的 COM 接口包装?

    我在 C 中有以下代码 我尝试将其移植到 PowerShell 但我不知道如何移植这个演员 ISkypeEvents Event skype CallStatus CallStatusHandler 如果我只是在 PowerShell 控制
  • 从 C# 访问 COM vtable

    C 中有没有办法访问 COM 对象的虚拟方法表以获取函数的地址 经过大量搜索和拼凑不同的部分解决方案后 我弄清楚了如何做到这一点 首先 您需要为您尝试访问的对象定义 COM 组件类 ComImport Guid InterfaceType
  • C#4做COM的时候需要调用Marshal.ReleaseComObject吗?

    我有 VS2010 并向我的项目添加了对 COM 库的引用 并且 VS 在项目中嵌入了主要互操作 如果我引用COM库中的对象并且我想快速处理它们而不等待GC 是否需要调用ReleaseComObject Marshal ReleaseCom
  • COM 互操作注册

    我有一个正在暴露的 NET 程序集COM http en wikipedia org wiki Component Object Model 该程序集有两个公共接口和一个公共类 当我构建程序集时 我收到此警告 AssemblyName dl
  • Pythoncom - 将相同的 COM 对象传递给多个线程

    你好 对于 COM 对象 我是一个完全的初学者 非常感谢任何帮助 我正在开发一个Python程序 该程序应该以客户端 服务器的方式读取传入的MS Word文档 即客户端发送一个请求 一个或多个MS Word文档 服务器使用pythoncom

随机推荐

  • 贪心算法之木棍问题

    问题 H 木棒 时间限制 1 Sec 内存限制 32 MB 提交 147 解决 60 提交 状态 题目描述 现有n根木棒 xff0c 已知它们的长度和重量 要用一部木工机一根一根地加工这些木棒 该机器在加工过程中需要一定的准备时间 xff0
  • cephadm安装ceph v15

    cephadm 安装ceph v15准备 参考安装文档 有问题可以直接留言 xff0c 大家一起交流 xff0c 以下都是部署的比较基础的东西 https docs ceph com en latest cephadm http www d
  • Mysql启用SSL以及JDBC连接Mysql配置

    文章目录 一 Mysql启用SSL配置1 检查mysql是否支持ssl2 设置用户是否使用ssl连接1 查看用户是否使用SSL连接2 强制某用户使用SSL连接3 测试不使用ssl能否连接上4 取消用户使用ssl连接 二 JDBC连接Mysq
  • Proxmox ve 使用cloud-init模板生成虚拟机

    本文中斜体字部分为命令行 1 Cloud init 的作用 cloud init是一个Linux虚拟机的初始化工具 xff0c 被广泛应用在AWS和OpenStack等云平台中 xff0c 用于快速新建虚拟机 xff0c 并进行一些系统初始
  • YUV文件转opencv的Mat格式并且显示播放

    include lt stdio h gt include lt string h gt include lt opencv2 core core hpp gt include lt opencv2 imgproc imgproc hpp
  • python 元组的元素的元素可以被修改

    Python的元组与列表类似 xff0c 不同之处在于元组的元素不能修改 元组使用小括号 xff0c 列表使用方括号 元组创建很简单 xff0c 只需要在括号中添加元素 xff0c 并使用逗号隔开即可 假设元组的第3个元素是一个字典 xff
  • VOT Toolkit工具使用说明(Python版)

    VOT Toolkit工具使用说明 xff08 Python版 xff09 一 工具链接 vot toolkit python版 github链 xff1a https github com votchallenge toolkit vot
  • 构建ubuntu base 出现apt update错误

    apt get update 错误 Get 1 http ports ubuntu com ubuntu ports bionic InRelease 242 kB Err 1 http ports ubuntu com ubuntu po
  • pip 安装numba报错

    pip 安装numba报错 问题描述 xff1a 本人在一个十分干净的容器里面 xff0c 想pip安装numba库 xff0c 但是该库需要依赖llvmlite这个库 xff0c 然后就它自己安装llvmlite的时候 xff0c 就报错
  • VS code 进行python远程运行与调试以及简单可视化变量

    23 04 29更新 xff0c 增加环境变量的debug配置项 23 03 24更新 这个配置项实在太常用了 置顶了 我这自己也天天开这篇文章复制粘贴的 34 name 34 34 train debug 34 34 type 34 34
  • VScode debuger 的不算bug的bug,不运行了

    具体办法就是改python拓展的版本 xff0c 记得要关闭自动更新 xff0c 不然一会插件又不能用了 改进详情 xff0c 见这位大佬吧 xff0c 我就不细说了 利用vscode对python代码做Debug xff0c 无法调试的解
  • latex引用跳转失效

    这两天写论文 xff0c 写也就写了 xff0c 某一次查看的时候 xff0c 突然发现 xff0c 全文的引用跳转通通失效 就引用序号都对着呢 xff0c 不是显示的 xff1f 号那种完全找不到的情况 但是点击那个跳转引用的超链接 xf
  • WinEdt修改快捷键,自定义功能按键,增加快捷指令

    xff08 还得搞封面 xff0c 随便敲几个字吧 xff09 在前一段时间 xff0c 为了快速加粗Latex里面的文字 xff0c 就查了一下怎么搞快捷键 在菜单栏Insert gt Font gt Bold是有这个加粗按钮的 xff0
  • Ubuntu下能连上无线但不能上网

    Ubuntu下连上无线网以后 xff0c 无法上网问题 先确认是否可以访问网路 xff0c 使用一下命令 ping www baidu com 正常理论下 xff0c 上面一句应该是连不通 xff0c 会返回无法解析 然后我们再ping一下
  • uefi和legacy bios的深度剖析

    这个是我总结的 参考了几个论坛还有 鸟哥的私房菜 还有一部分是我自己的经验 适合初步了解uefi和legacy的人更深入的了解 uefi amp legacy Legacy 1 我们可将MBR磁盘分区结构用下图简单表示 xff08 Wind
  • 大数据Hadoop生态圈介绍

    大数据Hadoop生态圈 组件介绍 Hadoop是目前应用最为广泛的分布式大数据处理框架 xff0c 其具备可靠 高效 可伸缩等特点 Hadoop的核心组件是HDFS MapReduce 随着处理任务不同 xff0c 各种组件相继出现 xf
  • Mybatis Plus如何使用自定义方法实现分页呢?

    转自 Mybatis Plus如何使用自定义方法实现分页呢 下文笔者讲述Mybatis之Plus实现自定义分页的方法分享 如下所示 写在前面的话 在以前没有自定义分页方法时 我们使用Limit currIndex 和 pageSize 在M
  • ESP32使用ESP-IDF,以太网联网和WIFI网络切换注意事项

    记录一个使用问题 xff0c 以便有需要的道友查阅 需要实现的功能 xff1a 在上电一次对有线无线进行检测 xff0c 联网的优先级为有线 gt 无线 问题 xff1a 在程序编写的初步 xff0c 写了两个网络回调函数并进行初始化操作
  • camera中的VSYNC,HSYNC作用?时序关系?

    HSYNC xff1a 行锁存 xff0c 换行信号 VSYNC xff1a 祯锁存 xff0c 换页信号 320 240的屏 xff0c 每一行需要输入320个脉冲来依次移位 锁存进一行的数据 xff0c 然后来个HSYNC 脉冲换一行
  • 常见 win32.com 操作

    import win32com client from win32api import RGB xlapp 61 win32com client gencache EnsureDispatch 34 Ket Application 34 x