【办公自动化】Excel“一键”生成国土“三调”转换代码 |
您所在的位置:网站首页 › 国土三调地类划分代码 › 【办公自动化】Excel“一键”生成国土“三调”转换代码 |
之前发了两片通过代码“一键”转换国土“三调”数据的文章, 《【办公自动化】国土“三调”用地分类“一键”转南京分类》 《【办公自动化】国土“三调”用地分类“一键”转国标分类》 有同学提出作为规划工作者不会python怎么办?答曰可以自学呀! 其实电脑装有Excel和Word就能“一键”搞定! 1、Excel“一键”开始 打开我们提供的用地转换对照表Excel(后文提供)快捷键 Alt+F11 打开了Excel的VB编辑器![]() ![]() ![]() ![]() ![]() 之前文章中提供的是python版本生成代码,用python生成python格式上更方便写,但在Excel中运行VBA,不需要读取文件,不需要安装python环境,不需要安装库,就是生成代码比python略微复杂一些,供交流学习! Public Sub make_code() Dim wdapp As Object '生成函数定义,筛选处理含K类型。通过chr(10)换行,注意python退让格式 cord = "def plan_name(name): " & Chr(10) & " if 'K' in name:" & Chr(10) & " name = name[:-1]" & Chr(10) '循环生成判断代码 For Row = 2 To Cells(Rows.Count, "a").End(xlUp).Row Name = Cells(Row, "c") + Cells(Row, "d") If Row = 2 Then cord = cord & " if name == '" & Cells(Row, "a") & "' : " & Chr(10) & " return '" & Name & "'" & Chr(10) Else cord = cord & " elif name == '" & Cells(Row, "a") & "' : " & Chr(10) & " return '" & Name & "'" & Chr(10) End If Next '生成代码结尾,没有else结尾gis中会报错 cord = cord & " else:" & Chr(10) & " return 'check '" Set wdapp = CreateObject("word.application") '链接WORD用于显示结果方便复制 wdapp.Documents.Add '新建WORD页面 wdapp.Visible = True '显示页面 wdapp.Selection = cord '写入代码并选择 End Sub附一个python版本供对比,还是python简洁: import pandas as pd url = "sandiao-gb.xlsx" #excel地址 #读取EXCEL对照表 df = pd.read_excel(url,dtype='object') #强制object这样所有的数据成了字符串 #生成定义函数,转换带K类用地,用\n换行,这里注意换行后的python对其格式 cord = 'def plan_name(name): \n if \'K\' in name:\n name = name[:-1]\n' #循环生成判断代码 for i in range(df.shape[0]): name = df.iloc[i,2]+df.iloc[i,3] if i == 0 : cord = cord + ' if name == \'%s\' : \n return \'%s\' \n' %(df.iloc[i,0], name) else: cord = cord + ' elif name == \'%s\' : \n return \'%s\' \n' %(df.iloc[i,0], name) #生成代码结尾,没有else结尾gis中会报错 cord = cord +' else:\n return \'check\' \n' print(cord) #python就是可以直接显示!8月12日最新发布GIS转换工具箱,转换文件已停止更新 对原转换文件感兴趣的同学可以点击下方网盘链接 链接:https://pan.baidu.com/s/1fIaDrvwfElGWeqtqwAyZWg 提取码:0817 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |