常见 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 操作 的相关文章

  • VB.NET 和 COM Interop 看似随机崩溃

    我正在考虑用 VB 6 重写一个全新的 VB NET 应用程序 该应用程序在终端服务下运行并大量使用 COM 由于某种原因 该应用程序存在随机奇怪之处 随机访问冲突错误 WinDbg 异常分析指向 dll 如 comdlg32 dll ms
  • 如何通过 COM 公开 .netstandard2.0 库以便在 VB6 中使用?

    我有一个 dotnet 核心库 一个框架 4 7 2 库和一个 vb6 应用程序 我想编写一个公共库供他们所有人访问 因此选择 netstandard2 0 我尝试了 netstandard2 0 库和 vb6 之间的 4 7 2 框架包装
  • 如何在管理控制台中打开所选对象的属性对话框?

    我正在寻找为特定 Windows 对象打开默认属性对话框的可能性 例如 services msc 中特定服务的属性对话 taskschd msc 中特定计划任务的属性对话 etc 我不想与该对话交互或更改任何属性 我只想打开它们 让用户直接
  • C# COM 跨线程

    我们正在开发一种软 件来控制科学测量设备 它提供了一个 COM 接口 定义了几个函数来设置测量参数并在测量数据时触发事件 为了测试我们的软件 我正在实现该设备的模拟 com 对象运行一个循环 定期触发事件 客户端应用程序中的另一个循环现在应
  • tlbexp.exe 更改方法名称的大小写

    我有一个相当奇怪的问题 我正在将接口从 C 库导出到 COM 我已启用 使用 COM 注册 项目设置 因此它调用 tlbexp exe 来创建类型库 我们在方法名称上使用驼峰式大小写 我注意到导出的类型库将这些恰好与类名一致的方法更改为 P
  • AxInterop 和 Interop 有什么区别?

    我已将 ocx 添加到 VS 的工具箱中 创建了两个 dll Interop NNN dll AxInterop NNN dll 每一个是什么 两者都需要吗 Interop xxx dll 和 AxInterop xxx dll 分别是引用
  • COM接口指南

    我不太喜欢 COM 接口 所以我有一个小问题 假设我有这段代码 Guid 148BD528 A2AB 11CE B11F 00AA00530503 InterfaceType ComInterfaceType InterfaceIsIUnk
  • 为不存在的文件创建 IShellItem 实例

    我怎样才能获得外壳项目 http msdn microsoft com en us library bb761144 aspx不存在的文件 或目录 的对象 SHCreateItemFromParsingName http msdn micr
  • 如何在CWorkerThread中编写简单的后台线程

    我正在尝试在 Internet Explorer 的附加组件中异步运行函数 我正在用 VC 编写 BHO 按照建议here https stackoverflow com questions 4285346 threading in bho
  • 以编程方式启动和停止 IIS Express

    我正在尝试用 C 构建一个小型应用程序 它应该启动 停止 IIS Express 工作进程 为此 我想使用 MSDN 上记录的官方 IIS Express API http msdn microsoft com en us library
  • .NET 中的 CoCreateInstance 完全匹配吗?

    我有进程内 DLL COM 服务器 但我选择以 DllSurrogate 身份运行 因此从非托管代码 Delphi 中我有 function TComWrapper GetServer IUnknown begin OleCheck CoC
  • C# 如何获取 COM 接口的实例

    我做了很多谷歌搜索 试图找到获取 COM 接口实例的标准方法 微软在他们的文章中提供了一个例子COM 互操作第 1 部分 客户端教程 https msdn microsoft com en us library aa645736 v vs
  • Delphi COM 对象中的早期绑定和后期绑定在性能方面哪个更好

    在delphi中 如果要创建COM对象 可以通过两种方式来完成 第一个是早期绑定 例如 uses MSScriptControl TLB MS Script Control var obj IScriptControl begin obj
  • 如何引用所有正在运行的 Excel 应用程序实例(包括隐藏的和没有工作簿的实例)的 COM 对象?

    如何获取每个正在运行的 Excel 应用程序实例的完整引用列表 无论其工作簿数量和可见性状态如何 我知道我可以使用 Windows API 来查找每个 Excel 工作簿窗口 其窗口类名称EXCEL7 让他们的句柄与AccessibleOb
  • 为 COM 互操作注册、gac 程序集时顺序重要吗?

    在为 COM Interop 注册 NET 程序集时 我做了两件事 目前按以下顺序进行 regasm tlb MyDll tlb Mydll dll gacutil i Mydll dll I use regasm为 COM 注册类型库并g
  • 哪个是对的? catch (_com_error e) 还是 catch (_com_error& e)?

    我应该使用哪一个 catch com error e or catch com error e 第二 这是我试图引用萨特的话 按值抛出 按引用捕获 学会catch正确 按值 而不是指针 抛出异常 通过引用捕获它们 通常是const 这是组合
  • 服务器端生成的 Excel 中出现 System.Runtime.InteropServices.COMException 错误

    我们有一个 Web 应用程序 可以生成 Excel 电子表格并在服务器端运行宏 然后它通过电子邮件将它们发送给不同的人 它是传统报告风格的一部分 我们正在对其进行转换 但仍然支持我们作为 IIS 中的网站提供的新应用程序 我知道进行 Off
  • 我刚刚在 Visual Basic 中运行的 COM 对象的 CLSID 是什么

    我需要知道我刚刚运行的 COM 对象的 CLSIDCreateObject xxx xxx 我怎么才能得到它 蒂亚 拉法尔 我认为您无法直接从 VB 本身获取该信息 例如 作为调用的副作用或次要结果 CreateObject 但你可以阅读注
  • 使用 pythoncom 在 Python 进程之间编组 COM 对象

    我希望有人可以帮助我从 Python 进行编组跨进程调用到 Excel 我有一个通过 Python 启动的 Excel 会话 我知道当需要从单独的 Python 进程访问它时 该会话将会启动并运行 我已经使用编组让一切按预期工作CoMars
  • 需要从 DCOM 配置中删除对象 (DCOMCNFG)

    我们有一个带有 activex exe 和 com dll 的应用程序 安装后 我们会在 DCOM 配置中创建一个对象 如果我们尝试从 DCOM 配置中删除该对象 它就会关闭 直到我们再次重新打开它 想知道是否有任何程序可以从 DCOM 及

随机推荐

  • 贪心算法之木棍问题

    问题 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