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取值的两种方法 ...
随机推荐
- 提供一个方法,遍历获取HashMap<String,String>中的所有value,并存放在list中返回,考虑泛型的使用
public List<String> getValueList(HashMap<String,String> map){ ArrayList<String> va ...
- 7. mixin的实现原理
mixin的实现原理 在Vue.mixin()中的内容会被维护到Vue.options静态属性里面 然后通过mergeOptions以特定的合并策略将全局的属性和用户属性合并起来 在获取用户选项的时候 ...
- Jest - Testing Asynchronous
When we test asynchronous, we use Axios to get the response. install the Axios npm i axios Cause we ...
- MavenDependencies 报错缺少jar包
1.首先看你的工程是否是maven项目,如果不是,则先转换为maven项目. 如果已经是maven项目了,maven的依赖库无法添加,则移步2: 2.项目右键,选择maven,然后子菜单,选择&quo ...
- python之shapely库的使用
参考链接: https://www.pudn.com/news/6228d5049ddf223e1ad1d411.html : https://desktop.arcgis.com/zh-cn/ar ...
- 关于.net core连接数据库字符串加密查询 (DES加密)
des加密获取的乱码是相对一致的 所以只需要获取到加密乱码在api后台解密就好 1.创建一个控制台用来获取加密后的乱码 using System; using System.Collections. ...
- Android中动态添加tab
来源过于啰嗦,这里只有简化后的. 转载请注明出处 http://www.cnblogs.com/zaiyuzhong/p/add-tab-dynamic-in-android.html 建立对应的布 ...
- 路飞项目 day02 全局日志、全局异常处理、封装Response、数据库准备
一.路飞项目全局日志配置 那个代码不用死记硬背,知道一些地方是啥意思即可 1.复制django自带的日志模块的大代码到dev(settings)文件中 LOGGING = { 'version': ...
- uniapp引入腾讯云直播助手插件
在uniapp开发小程序,引入腾讯云直播助手插件 1.在manifest.json文件中,找到微信小程序特有相关,声明要使用的插件 /* 小程序特有相关 */ "mp-weixin" ...
- 提取可执行文件中的调试信息 objcopy --only-keep-debug app app.debug
https://blog.csdn.net/CaspianSea/article/details/17269977 set-debug-directory show-debug-directory i ...