登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

等待水鄉

聆聽南風...

 
 
 

日志

 
 

MAPGIS图件附表数据从EXCEL表格转贴的技巧  

2011-01-17 17:24:09|  分类: GIS |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

【摘要】将EXCEL表格数据转贴到MAPGIS图件中,来制作图件附表应该是很简捷的方法。但是由于格式的问题,转贴后,表格的列会发生错位不能对齐,这里介绍了一种技巧来解决这个问题,以提高MAPGIS图件附表的制作效率。

【关键词】MAPGIS,EXCEL,转贴,技巧
 
1、引言

电脑化的资料处理与操作中,“转贴”最为常用。在MAPGIS制作的许多专业图件中,经常要附加一定的表格,如勘查行业的制图。一般情况下,这些表格在制图之前,多数已形成了EXCEL文档。能不能用转贴的方法,减少重复输入呢?

在MAPGIS中,制做附表,一般的方法是先画表格线,再将表格数据逐项按“注释”输入,输入工作量一般较大。这里交流的一种技巧,用转贴的方法,使附表制作变得简捷。

转贴EXCEL表格数据进入MAPGIS的图件,可使用 “图元输入”——“版面”功能,实现一次性将全部EXCEL表格数据进行转贴。转贴就是一般常用的“复制”——“粘贴”的方法,操作简便。

但是EXCEL表格数据转贴进MAPGIS后,仅仅转进的是文本数据,没有表线。最大的问题是转贴后同列数据纵向不能对齐。如果数据能够对齐,只要再添加上表线,就可以很快完成一个附表,不再需要重复输入。

如果在转贴之前,先在EXCEL表格数据中进行一些处理,使同列数据位宽相同,来解决转贴进MAPGIS后的表格数据文本列向不齐,将肯定对MAPGIS制作附表带来极大方便,具有很高的推广交流价值。

2、转贴后不能对齐的现象与原因

EXCEL中制作的表格形式见图1。直接复制到MAPGIS的“版面”中,列向将发生错位,不能对齐 (见图2)。这是什么原因呢?

MAPGIS图件附表数据从EXCEL表格转贴的技巧 - yetom - 等待水鄉(图1)

MAPGIS图形输入的“版面”功能,仅仅是一个块体文本的输入功能,其中制表位和EXCEL表格文本的制表位不完全相同,因此MAPGIS“面版”接收转贴后,仅接收的是文本数据,不接收表线,列向数据也会发生错位。找到了错位的原因,就可以找到解决办法。

3、转贴前EXCEL表格数据处理

在转贴之前,对EXCEL表格数据,采用追加空格的方法,进行等宽处理,使同一列的数据宽度一致。这样转贴进MAPGIS后,就可以使表格文本数据列向对齐,不发生错位。

MAPGIS图件附表数据从EXCEL表格转贴的技巧 - yetom - 等待水鄉(图2)

直接操作追加空格,固然可行,但是空格在EXCEL中输入中不可见,很难保证同一列数据宽度完全一致。在MAPGIS中手工直接调节,也可以用来解决列向不齐问题。但是,手工在数据文本中直接操作,对于小型表格,倘且可行,而对于大型表格,未免笨拙。这里介绍两种方法,不仅可以实现对齐,同时可避免误操作,减少数据错误。

3.1. EXCEL公式操作法

首先确定每一列最宽数据的宽度n,设定此列数据等宽值N(大于等于n)。如果数据中半角和全角混合,则一个全角字符要按二个单角字符计算。如是全部是全角字符,也可以将一个全角字符按一个字符计算,但追加空格时,空格也需要采用全角空格字符。

然后在所要处理的列后插一空列。在空列的第一行,输入以下公式:
      =TRIM(Xn)&
      LEFT(REPT(“ ”,N),
      N-LENB(TRIM(Xn)))   ……(1)式
式中:Xn——EXCEL中单元格代号。
如果一列之中全部是全角字符,可采用下式操作。
      =TRIM(Xn)&
      LEFT(REPT(“ ”,N),
      N-LEN(TRIM(Xn)))   ……(2)式
一列之中,如果全部是数字或者是数字与字符混合,均可采用(1)式操作。
如果要让数字右对齐,字符左对齐,可采用如下(3)式进行操作:
      =IF(ISNUMBER(Xn),
      (LEFT(REPT(“ ”,N),
      N-LENB(TRIM(Xn)))&
      TRIM(Xn)),
      (TRIM(Xn)&
      LEFT(REPT(“ ”,N),
      N-LENB(TRIM(Xn)))))   ……(3)式

然后,沿插入的空列,将第一个输入公式的单元格,拖动复制,使该列数据全部处理完毕。

最后,将处理得到的新的一列数据“全选”和“复制”,使用“选择粘贴”—“粘贴”— “数值”,“运算”选择“无”,替换覆盖到原数据列中,再将其后的插入列删除。

其它各列重复以上操作。全部处理完毕后,就可以进行转贴操作。转贴后的效果见图3,上下是对齐的,再绘入表线,就可以很快完成MAPGIS制图中的一张附表(图4)。

MAPGIS图件附表数据从EXCEL表格转贴的技巧 - yetom - 等待水鄉(图3)MAPGIS图件附表数据从EXCEL表格转贴的技巧 - yetom - 等待水鄉(图4)

3.2. EXCEL宏处理的方法

如果上述直接在表格中操作,还显不够方便,可采用EXCEL VBA创建宏的方法,进行操作。该方法开始较麻烦,先要在EXCEL宏中输入以下代码,测试正确后,“导出”为一个“*.BAS”文件,以备以后再用。对于其它表格的处理,在宏中“导入”该段代码,执行后瞬间就可完成等宽处理。之后就是转贴操作。

以下为等宽处理全部代码:
      Sub 等宽数据处理()
      ' 等宽数据处理宏
      '求出最大行,最大列,每列最大位宽
      Dim MaxRows, MaxColumns As Long
      Dim MaxWidth(256) As Long
      Dim i, j As Long
      For i = 1 To Columns.Count 
       If WorksheetFunction.CountA _
      (Columns(i)) > MaxRows Then
        MaxRows = WorksheetFunction. _
      CountA(Columns(i))
       End If
      Next i
      For i = 1 To MaxRows
       If WorksheetFunction. _
      CountA(rows(i)) > MaxColumns Then
      MaxColumns =  WorksheetFunction. _
      CountA(rows(i))
       End If
      Next i
      For i = 1 To MaxColumns
       For j = 1 To MaxRows
        If LenB(StrConv(CStr _
      (Trim(Cells(j, i))), _
       vbFromUnicode)) > _
       MaxWidth(i) Then
         MaxWidth(i) = _
       LenB(StrConv(CStr(Trim _
      (Cells(j, i))), vbFromUnicode))
        End If
       Next j
      Next i
      ’等宽处理
      For i = 1 To MaxColumns
       For j = 1 To MaxRows
        If WorksheetFunction. _
      IsNumber(Cells(j, i).Value) Then
         Cells(j, i).Value = _
       Left(WorksheetFunction.Rept _
      (" ", MaxWidth(i)), MaxWidth(i) _
       - LenB(StrConv(CStr(Trim(Cells _
      (j, i))), vbFromUnicode))) _
       & Trim(Cells(j, i).Value)
        Else
         Cells(j, i).Value = Trim(Cells _
      (j, i).Value) & Left _
      (WorksheetFunction.Rept(" ", _
       MaxWidth(i)), MaxWidth(i) - _
       LenB(StrConv(CStr(Trim(Cells(j,_
       i))), vbFromUnicode)))
        End If
        Next j
      Next i
      End Sub


4、结束语

一、MAPGIS有待改进表格数据转贴不能对齐的问题,与其它编辑软件能够更好地交换数据,以使MAPGIS操作更加方便。

二、介绍的方法,可以提高MAPGIS制图中绘制附表的效率,可以避免重复输入,减少输入错误,提高工作效率。

三、所介绍的方法,对于处理一般EXCEL表格数据,均可通行,但对于中文、英文和数字混合的复杂数据,处理转贴后仍有可能存在微弱错位的问题,这是由于半角英文字符所占位置稍宽,可以在EXCEL中将半角英文字符全部转换为全角英文字符,也可以在MAPGIS手工介入调节。

四、本文旨在经验交流,不妥之处敬请指正。

作者简介
梁炳仁,男,甘肃省地矿局第一地质矿产勘查院,工程师。E_mail:aulbr@163.com

  评论这张
 
阅读(1579)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018