xlwings.copy两种用法和匹配超链接
第一种复制整个sheet页,不能覆盖同名sheet,需先删除.
name新sheet也名称 after复制后的位置
wb.sheets('增量机会-体外刷新导入').copy(name='快照版本(勿动)',after=wb.sheets('手工录入-服务收入等预测'))
第二种类似vba复制选中区域从A到B
wb.sheets("快照版本(勿动)").range(f'2:{source_last_row}').copy(wb.sheets("增量机会-体外刷新导入").range('A5'))
#从一个已有的xls导入子项目名称的超链接到现在的xls
def add_hyperlink(path):
'''
匹配超链接
:param path:
:return:
'''
#一键匹配超链接
try:
wb = xw.Book.caller()
hyperlink_wb = load_workbook(path) #type: Workbook
ws = hyperlink_wb['Sheet1']
#获取输入超链接所在列
columns = [ i.value for i in ws[1]]
column = columns.index('子项目名称') if '子项目名称' in columns else None
#获取超链接map
if column != None:
column +=1
link_map = {}
rows = ws.max_row
for index in range(2,rows+1):
cell = ws.cell(row=index,column=column)
if cell.hyperlink:
key = cell.value
value = cell.hyperlink.target
link_map[key] = value
#获取当前wb 子项目名称 所在列
wb_columns = wb.sheets('增量机会-体外刷新导入').range('4:4').value
wb_column = wb_columns.index('子项目名称') if '子项目名称' in wb_columns else None
last_row = wb.sheets("增量机会-体外刷新导入").used_range.last_cell.row
for index in range(5,last_row+1):
cell = wb.sheets('增量机会-体外刷新导入').range(index,wb_column+1) map_res = link_map.get(cell.value)
if map_res:
cell.add_hyperlink(address=map_res,text_to_display=cell.value)
else:
cell.font.color = '#00000'
cell.characters.api.Font.Underline = False
wb.save()
except BaseException as e:
try:
print(e)
wb.sheets('config(勿动)').range('message').value = ','.join(e.args)
except:
pass
if __name__ == '__main__':
xw.serve()
#vba代码
Sub add_hyperlink()
On Error GoTo exit_
ThisWorkbook.Sheets("config(勿动)").Range("message") = ""
ThisWorkbook.Sheets("增量机会-体外刷新导入").Select
If ActiveSheet.FilterMode Then
ActiveSheet.ShowAllData
End If
fpath = pickFile()
strFileName = Replace(fpath, "\", "\\")
RunPython "import MainProgram; MainProgram.add_hyperlink('" & strFileName & "')"
exit_:
msg = ThisWorkbook.Sheets("config(勿动)").Range("message")
If msg <> "" Then
MsgBox msg
Else
MsgBox ("执行完成!")
End If
End Sub
wb.sheets('增量机会-体外刷新导入').copy(name='快照版本(勿动)',after=wb.sheets('手工录入-服务收入等预测'))
xlwings.copy两种用法和匹配超链接的更多相关文章
- android第一行代码-5.监听器的两种用法和context
监听器的两种用法 1.匿名函数设置监听器 public class MainActivity extends Activity { private Button button; @Override p ...
- Android(java)学习笔记147:textView 添加超链接(两种实现方式,,区别于WebView)
1.方式1: LinearLayout layout = new LinearLayout(this); LinearLayout.LayoutParams params = new LinearLa ...
- Android(java)学习笔记90:TextView 添加超链接(两种实现方式)
1. TextView添加超链接: TextView添加超链接有两种方式,它们有区别于WebView: (1)方式1: LinearLayout layout = new LinearLayout(t ...
- android textView 添加超链接(两种实现方式)
在textView添加超链接,有两种方式,第一种通过HTML格式化你的网址,一种是设置autolink,让系统自动识别超链接,下面为大家介绍下这两种方法的实现 在textView添加超链接,有两种方式 ...
- 多个超链接a 选中的和不选中的两种样式
<script src="http://www.jq22.com/jquery/1.8.3/jquery.min.js"> 浏览器自带的jquery库 <scri ...
- Python 使用 xlwings 往 excel中写入一列数据的两种方法
1.准备一个二维列表,然后再range后面不指定任何选项,可以输出该二维列表中数据在一列中显示,如下代码: # -*- coding:utf-8 -*- import xlwings as xw li ...
- sed匹配两种重要思想
1,sed匹配两种重要思想 屏蔽思想:遮住不想要的 挑出思想:遮住所有,挑出想要的. 2,实例 屏蔽思想: [root@lanny ~]# sed -n '2p' file.txt |sed -r ' ...
- textView 添加超链接(两种实现方式)
在textView添加超链接,有两种方式,第一种通过HTML格式化你的网址,一种是设置autolink,让系统自动识别超链接,下面为大家介绍下这两种方法的实现 在textView添加超链接,有两种方式 ...
- 解决mybatis实体类和数据库列名不匹配的两种办法
我们在实际开发中,会遇到实体类与数据库类不匹配的情况,在开发中就会产生各种各样的错误,那么我们应该怎么去解决这一类的错误呢?很简单,下面我们介绍两种解决方法: 首先我们看一下数据库和实体类不匹配的情况 ...
- 选中没有选中的复选框,匹配含有某个字符串的正则,json取值的两种方法,把变量定义在外面跟里面的区别
一.筛选没有选中的复选框:not("input:checked") 二.匹配有VARCHAR的字符串:".*VARCHAR.*?" 三.json取值的两种方法 ...
随机推荐
- Property or method "scope" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components
报错如下 属性或方法"范围"不是在实例上定义的,而是在呈现期间引用的. 通过初始化属性,确保此属性是反应性的,无论是在数据选项中,还是对于基于类的组件. 原因在template中未 ...
- Redis设置开机自启动
0.前提条件 redis_version:7.0.5 Linux Alibaba Cloud Linux release 3 (soaring Falcon) 查询版本有如下两种方式: 1.通过red ...
- 以MPU6050为例的硬件IIC的使用
目录 参考调试MPU6050与EEPROM的经验,整合了目标内存/寄存器地址是否为16位的情况,合并了单字节与多字节间的操作,添加了返回值与读写超时功能:硬件IIC的7位从机地址查询方式读写参考代码 ...
- SpringBoot Circular view path错误
在运行SpringBoot时报了这样一个错误 百度翻译是视图循环 搜索一下 原来是类上restcontroller写成了controller 对比一下两者 @Controller和@RestCont ...
- 数据驱动之 python + requests + Excel
数据驱动 是根据数据来测试的,如读取 excel表中的测试用例自动填写测试结果,发送测试报告 包括以下模块: 1.获取用例 2.调用接口 3.校验结果 4.发送测试报告 5.异常处理 6.日志模块 1 ...
- HTTP与HTTPS的区别,详细介绍
HTTP与HTTPS介绍 超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间 ...
- Access 时间查询 与 SQL SERVER 不一样的几个地方
最近用到了ACCESS 数据库 ,与之前用SQL SERVER 还是有点区别的. 1. 时间 之间 用 # 连接 如下: public static string GetUserInfo(stri ...
- 【ubuntu20】解压文件
第一类处理 *** .zip或 ***.rar 时,需要先下载相对应的unzip和unrar,可在终端,执行 sudo apt-get install unzipsudo apt-get instal ...
- Nginx的重写功能——Rewrite
Nginx的重写功能--Rewrite https://huaweicloud.csdn.net/63566cced3efff3090b5f470.html?spm=1001.2101.3001.66 ...
- i春秋云镜 CVE-2022-32991
第一种方法 第二种延时注入