第一种复制整个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两种用法和匹配超链接的更多相关文章

  1. android第一行代码-5.监听器的两种用法和context

    监听器的两种用法 1.匿名函数设置监听器 public class MainActivity extends Activity { private Button button; @Override p ...

  2. Android(java)学习笔记147:textView 添加超链接(两种实现方式,,区别于WebView)

    1.方式1: LinearLayout layout = new LinearLayout(this); LinearLayout.LayoutParams params = new LinearLa ...

  3. Android(java)学习笔记90:TextView 添加超链接(两种实现方式)

    1. TextView添加超链接: TextView添加超链接有两种方式,它们有区别于WebView: (1)方式1: LinearLayout layout = new LinearLayout(t ...

  4. android textView 添加超链接(两种实现方式)

    在textView添加超链接,有两种方式,第一种通过HTML格式化你的网址,一种是设置autolink,让系统自动识别超链接,下面为大家介绍下这两种方法的实现 在textView添加超链接,有两种方式 ...

  5. 多个超链接a 选中的和不选中的两种样式

    <script src="http://www.jq22.com/jquery/1.8.3/jquery.min.js"> 浏览器自带的jquery库 <scri ...

  6. Python 使用 xlwings 往 excel中写入一列数据的两种方法

    1.准备一个二维列表,然后再range后面不指定任何选项,可以输出该二维列表中数据在一列中显示,如下代码: # -*- coding:utf-8 -*- import xlwings as xw li ...

  7. sed匹配两种重要思想

    1,sed匹配两种重要思想 屏蔽思想:遮住不想要的 挑出思想:遮住所有,挑出想要的. 2,实例 屏蔽思想: [root@lanny ~]# sed -n '2p' file.txt |sed -r ' ...

  8. textView 添加超链接(两种实现方式)

    在textView添加超链接,有两种方式,第一种通过HTML格式化你的网址,一种是设置autolink,让系统自动识别超链接,下面为大家介绍下这两种方法的实现 在textView添加超链接,有两种方式 ...

  9. 解决mybatis实体类和数据库列名不匹配的两种办法

    我们在实际开发中,会遇到实体类与数据库类不匹配的情况,在开发中就会产生各种各样的错误,那么我们应该怎么去解决这一类的错误呢?很简单,下面我们介绍两种解决方法: 首先我们看一下数据库和实体类不匹配的情况 ...

  10. 选中没有选中的复选框,匹配含有某个字符串的正则,json取值的两种方法,把变量定义在外面跟里面的区别

    一.筛选没有选中的复选框:not("input:checked") 二.匹配有VARCHAR的字符串:".*VARCHAR.*?" 三.json取值的两种方法 ...

随机推荐

  1. KMP 算法实现

    # coding=utf-8 def get_next_list(findding_str): # O(m) # 求一个字符串序列每个位置的最长相等前.后缀 j = 0 # 最长相等前缀的末位 nex ...

  2. pgsql判断字符串是否为数字

    利用正则表达式来对字符串进行匹配 因为工作遇到了一个问题需要对字符串是否可以转换为数值进行判断.今天关于这个问题进行一个分享,流程如下 数字的正则表达式 ^([0-9]+.?[0-9]*|.[0-9] ...

  3. JS 动态获取 Url 参数(封装函数)

    话不多说直接上代码: 封装函数如下: (如果urls固定,可以只写一个name变量) getQueryString(name, urls) { var url = urls; // 获取URL // ...

  4. linux查看java堆栈信息_linux进程堆栈大小

    1.查看JAVA进程JVM参数 jinfo -flags pid(进程号) -XX:CICompilerCount=2 最大的并行编译数 -XX:InitialHeapSize=16777216 JV ...

  5. docker部署flask+uwsgi+nginx+postgresql,解耦拆分到多个容器,实现多容器互访

    本人承诺,本博客内容,亲测有效. dockerfile文件, FROM centos:7 RUN mkdir /opt/flask_app COPY ./show_data_from_jira /op ...

  6. 错误:[ERROR] 不再支持源选项 5。请使用 6 或更高版本。 [ERROR] 不再支持目标选项 1.5。请使用 1.6 或更高版本。

    解决方案 pom.xml文件中增加maven编译的java.version jdk版本设置,以及maven.compiler.source 资源编译jdk版本设置和maven.compiler.tar ...

  7. CAM更改起始直径为直径

    Session* theSession = Session::GetSession(); Part* workPart(theSession->Parts()->Work()); UI* ...

  8. 【杂项】瞎玩——suhr RIOT单块制作流程

    难得的周末,在家上课似乎丝毫没有轻松多少,然而专业课任务的ddl远在天边,上午赶赶进度似乎稍微闲下来了点,正好前几天找电路的时候看到一个非常nice的效果器制作网站,国内少有深入研究效果器电路的文章, ...

  9. [Notes-DS-2]线性结构

    分割线------------- 分割线----------------

  10. java开发微信APP支付

    直接上代码 String nonce_str=WXPayUtil.generateNonceStr(); //WXPayUtil微信自己有的,自己下载,这里是生成随机字符串,下载地址(下载java的里 ...