GIS数据导出Excel?属性表怎么转换?
GIS数据导出Excel?属性表怎么转换? 这是很多 GIS 初学者、数据整理人员和项目制图人员都会遇到的问题:地图图层已经做好了,属性表里有地块编号、面积、权属、分类、坐标等字段,但需要交给同事做统计、汇总或报表时,对方只想要 Excel 文件。
本文以“GIS数据导出Excel”为核心,讲清楚属性表怎么转换成 Excel,分别介绍 QGIS、ArcGIS Pro、ArcMap、GeoPandas 等常见方法,并说明字段乱码、面积不准、日期丢失、中文字段名异常等常见坑该如何排查。

引言:为什么 GIS 属性表经常需要导出 Excel
在实际 GIS 项目中,空间数据不仅要在地图上显示,还经常要被统计、审核和汇总。比如:
- 将地块属性表导出给土地、规划或测绘人员核对。
- 把道路、管线、设施点位数据导出为 Excel 做台账。
- 将空间分析结果导出给非 GIS 同事查看。
- 把 QGIS 或 ArcGIS Pro 中的字段结果交给其他系统导入。
这类需求的本质是:把 GIS 图层中的属性表转换为表格数据。需要注意的是,属性表导出 Excel 并不等于导出地图本身。如果你只需要字段内容,导出表格即可;如果还需要几何坐标,则要额外生成 X、Y 坐标或 WKT 几何字段。
背景:GIS数据导出Excel常见的几种场景
不同软件中,“GIS数据导出Excel”的入口名称不完全一样。有的软件直接支持 XLSX,有的软件更推荐先导出 CSV,再用 Excel 打开。常见场景如下:
| 场景 | 推荐方法 | 适合对象 |
|---|---|---|
| QGIS 图层属性表导出 | 另存为 XLSX 或 CSV | QGIS 用户、GIS 学生 |
| ArcGIS Pro 属性表导出 | Table To Excel 工具 | ArcGIS Pro 用户 |
| ArcMap 属性表转换 | Table To Excel 或导出 DBF/CSV | 传统 ArcGIS 用户 |
| 批量导出多个图层属性表 | Python、ArcPy、GeoPandas | GIS 工程师、数据分析人员 |
| 需要保留坐标信息 | 先计算 X/Y 或 WKT 字段,再导出 | 点位台账、外业核查数据 |
如果只是一次性导出,使用软件界面即可。如果要每天或每周重复导出,建议用 Python 脚本自动化处理,避免手工复制粘贴造成字段错位。
原理:属性表怎么转换成 Excel
GIS 图层通常由两部分组成:几何信息和属性信息。几何信息描述点、线、面的空间形状,属性信息则是字段表,例如编号、名称、类型、面积、长度、备注等。
所谓“属性表转换 Excel”,主要是把属性信息写入 XLSX、CSV 或其他表格格式。这里有几个关键点:
- 字段名:Excel 表头来自 GIS 属性表字段名。
- 字段值:每一行对应一个要素的属性记录。
- 字段类型:文本、整数、小数、日期等类型会影响 Excel 中的显示。
- 编码:中文字段或中文内容如果编码不匹配,可能出现乱码。
- 几何:默认导出属性表时,几何形状通常不会直接进入 Excel,除非你额外生成坐标或 WKT 字段。
因此,正确的流程不是直接“复制属性表”,而是先检查字段、确认坐标或面积是否需要、再选择合适的导出格式。
步骤:QGIS中将GIS数据导出Excel
如果你使用 QGIS,属性表导出 Excel 是最直接的操作之一。适合 Shapefile、GeoPackage、GeoJSON、PostGIS 图层等常见数据源。
步骤一:打开图层属性表并检查字段
- 在 QGIS 图层面板中右键目标图层。
- 选择“打开属性表”。
- 检查字段是否完整,例如编号、名称、面积、类型、备注等。
- 确认是否存在空值、乱码、字段名过长或字段类型异常。
如果你要导出面积或长度,不建议直接相信原始字段。最好先确认数据坐标系是否适合计算面积,例如使用投影坐标系而不是经纬度坐标系。
步骤二:如需坐标,先生成 X/Y 字段
如果是点图层,并且 Excel 中需要坐标,可以在字段计算器中新增字段:
x($geometry)
y($geometry)
对于面图层,如果需要中心点坐标,可使用:
x(centroid($geometry))
y(centroid($geometry))
这样导出的 Excel 就不仅有属性信息,还能保留可用于定位的坐标字段。
步骤三:另存为 Excel 或 CSV
- 右键图层,选择“导出”。
- 选择“另存为”。
- 格式选择“MS Office Open XML spreadsheet [XLSX]”或“逗号分隔值 [CSV]”。
- 文件名设置为合适路径,例如
地块属性表.xlsx。 - 坐标参考系保持原图层坐标系即可,除非你需要转换坐标。
- 字段列表中只勾选需要导出的字段。
- 点击“确定”。
如果你的表格字段很多,建议只导出需要交付的字段。这样 Excel 更清晰,也能减少后续误用字段的风险。
步骤:ArcGIS Pro中属性表转换Excel
在 ArcGIS Pro 中,推荐使用地理处理工具 Table To Excel。这个方法比复制粘贴更可靠,适合正式项目交付。
步骤一:打开 Table To Excel 工具
- 打开 ArcGIS Pro 项目。
- 在“分析”选项卡中点击“工具”。
- 搜索 Table To Excel。
- 打开该工具。
步骤二:设置输入表和输出文件
- 输入表选择目标图层的属性表。
- 输出 Excel 文件设置为
.xls或.xlsx文件路径。 - 如需使用字段别名,可选择使用字段别名作为列名。
- 运行工具。
如果图层来自企业地理数据库或在线服务,建议先确认你有读取全部记录的权限。有些服务图层可能存在最大返回记录数限制,导致导出的 Excel 记录不完整。
步骤三:检查导出结果
导出完成后,用 Excel 打开文件,重点检查:
- 总行数是否与 GIS 属性表一致。
- 中文字段名和中文内容是否正常。
- 日期字段是否被 Excel 自动改格式。
- 编号字段是否被 Excel 自动转成科学计数法。
- 面积、长度字段的小数位是否符合要求。
对于项目交付表,建议在 Excel 中冻结首行,并另存为正式文件,避免直接修改原始导出结果。
步骤:使用GeoPandas批量将GIS属性表导出Excel
如果你需要批量转换多个 GIS 文件,手工导出会很慢。此时可以使用 Python GIS 常用库 GeoPandas。它适合处理 Shapefile、GeoPackage、GeoJSON 等矢量数据。
import geopandas as gpd
input_path = "data/land_parcels.shp"
output_path = "output/land_parcels_attributes.xlsx"
gdf = gpd.read_file(input_path)
# 如果不需要几何字段,只导出属性表
df = gdf.drop(columns="geometry")
df.to_excel(output_path, index=False)
如果需要导出点坐标,可以这样写:
import geopandas as gpd
gdf = gpd.read_file("data/points.gpkg")
# 确保是点图层
gdf["x"] = gdf.geometry.x
gdf["y"] = gdf.geometry.y
df = gdf.drop(columns="geometry")
df.to_excel("output/points_with_xy.xlsx", index=False)
如果是面图层,并且需要中心点坐标,可以先计算代表点:
import geopandas as gpd
gdf = gpd.read_file("data/polygons.gpkg")
point = gdf.geometry.representative_point()
gdf["x"] = point.x
gdf["y"] = point.y
df = gdf.drop(columns="geometry")
df.to_excel("output/polygons_attributes.xlsx", index=False)
注意:GeoPandas 写入 Excel 通常需要安装 openpyxl。如果报错,可以先安装:
pip install openpyxl
常见坑:GIS属性表导出Excel后容易出错的地方
坑一:中文乱码
如果从 GIS 数据导出 CSV 后用 Excel 打开出现乱码,通常是编码问题。建议优先导出 XLSX;如果必须使用 CSV,尽量选择 UTF-8 编码,并在 Excel 中通过“数据”导入文本,而不是直接双击打开。
坑二:编号字段变成科学计数法
例如地块编号、身份证号、设施编码、管线编号等长数字字段,Excel 可能自动转换为科学计数法。解决方法是把这类字段在 GIS 中设置为文本字段,或在 Excel 中提前设置列格式为文本。
坑三:面积字段看起来不准
面积不准通常不是 Excel 的问题,而是 GIS 计算面积时使用了不合适的坐标系。经纬度坐标系单位是度,不适合直接计算平方米。应先投影到合适的平面坐标系,再计算面积字段,然后导出 Excel。
坑四:导出后少了几何信息
Excel 本身不是空间数据格式,不能直接保存点线面几何。若需要几何信息,应在导出前生成 X/Y 坐标、WKT 字符串,或同时保留原始 Shapefile、GeoPackage、GeoJSON 文件。
坑五:字段名被截断
Shapefile 的字段名长度有限,常见情况是中文字段名或长字段名被截断。若你需要完整字段名,建议使用 GeoPackage 或 File Geodatabase 作为中间格式,再导出 Excel。
坑六:筛选状态影响导出
部分软件在导出时可能只导出已选中记录,或导出当前筛选结果。导出前请确认是否存在选择集、定义查询、过滤条件,否则 Excel 行数可能少于原始属性表。
方法比较:XLSX、CSV、DBF和复制粘贴怎么选
| 方法 | 优点 | 缺点 | 推荐程度 |
|---|---|---|---|
| 直接导出 XLSX | 兼容 Excel,中文友好,格式稳定 | 超大数据量时文件可能较大 | 推荐 |
| 导出 CSV | 通用、轻量、适合系统导入 | 容易出现编码、分隔符和日期格式问题 | 适合数据交换 |
| 导出 DBF | 传统 GIS 软件支持较多 | 字段名、编码、字段类型限制明显 | 不优先推荐 |
| 属性表复制粘贴 | 临时操作快 | 容易漏行、错列,不适合正式交付 | 仅用于临时查看 |
| Python 批量导出 | 可重复、可自动化、适合多文件 | 需要一定脚本基础 | 适合批处理 |
如果是正式项目交付,优先选择 XLSX。如果是系统之间的数据交换,CSV 更通用。如果是批量任务,建议使用 Python、ArcPy 或 GeoPandas 自动生成 Excel。
检查清单:导出Excel前后必须核对什么
为了避免返工,建议每次 GIS数据导出Excel 前后都按下面清单检查。
导出前检查
- 确认目标图层是否正确。
- 确认是否只导出选中要素。
- 确认是否存在定义查询或过滤条件。
- 确认字段名、字段类型和字段顺序是否合理。
- 确认面积、长度、坐标字段是否已正确计算。
- 确认中文内容是否正常显示。
- 确认是否需要保留 X/Y 坐标或 WKT 几何。
导出后检查
- Excel 行数是否与 GIS 属性表记录数一致。
- 字段列数是否完整。
- 编号字段是否被自动改格式。
- 日期字段是否被 Excel 自动转换。
- 小数位是否满足统计或交付要求。
- 中文字段和中文值是否乱码。
- 是否有空行、重复行或异常空值。
最简单的验证方式是:在 GIS 属性表中查看总记录数,再在 Excel 中查看数据行数。两者一致,才能继续做统计和交付。
FAQ:GIS数据导出Excel常见问题
GIS属性表可以直接转换成Excel吗?
可以。QGIS 可以通过“另存为”导出 XLSX 或 CSV,ArcGIS Pro 可以使用 Table To Excel 工具。需要注意的是,默认导出的主要是属性字段,不一定包含几何坐标。
属性表怎么转换才不会乱码?
优先导出 XLSX。如果使用 CSV,建议选择 UTF-8 编码,并在 Excel 中通过“数据导入”方式打开。不要总是直接双击 CSV,因为 Excel 可能按系统默认编码解析,导致中文乱码。
为什么GIS数据导出Excel后没有坐标?
因为 Excel 是普通表格格式,不会自动保存 GIS 几何。点图层需要先生成 X、Y 字段;线或面图层可以根据需求生成中心点坐标、代表点坐标或 WKT 字段。
为什么导出的Excel行数比属性表少?
常见原因是只导出了选中要素、图层存在筛选条件、服务图层有最大返回记录限制,或者导出过程中出错。请先清除选择、检查定义查询,再重新导出。
QGIS导出Excel应该选XLSX还是CSV?
如果是给人查看和编辑,建议选 XLSX;如果是给系统导入或进行数据交换,CSV 更通用。但 CSV 要特别注意编码、分隔符和日期格式。
Excel能不能保存Shapefile里的点线面?
不能完整保存。Excel 可以保存属性字段、坐标字段或 WKT 文本,但不能像 Shapefile、GeoPackage、GeoJSON 那样真正保存空间几何和坐标参考系。
结论:属性表转换Excel的正确思路
GIS数据导出Excel并不复杂,但要做得可靠,关键是先理解属性表、字段类型、编码和几何信息之间的关系。不要只依赖复制粘贴,正式工作中应使用 QGIS 另存为、ArcGIS Pro 的 Table To Excel,或 Python 脚本批量导出。
如果只是交付普通属性台账,导出 XLSX 最稳妥;如果需要系统交换,CSV 更方便;如果需要坐标或几何信息,必须在导出前生成 X/Y、中心点或 WKT 字段。按“字段检查、格式选择、导出、Excel校验”的流程操作,GIS 属性表转换 Excel 就能减少乱码、漏行、面积错误和字段格式异常等问题。