Export Attributes from Arcmap without Geometry fields

1999
14
11-01-2019 09:57 AM
2Quiker
Occasional Contributor II

I need to export attributes from a certain layer in Arcmap but without the OID & Geometry fields to excel.

I've tried the following bet i am getting error ("AttributeError: DescribeData: Method areaFieldName does not exist") on line 15. I would appreciate any help with the code, thanks.

 

import arcpy
import os

arcpy.env.overwriteOutput = True
mxd = arcpy.mapping.MapDocument("CURRENT")
df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]
lyr = arcpy.mapping.ListLayers(mxd, "Notified")[0]

arcpy.env.workspace = os.path.dirname(mxd.filePath)
wp = os.path.dirname(mxd.filePath)

fc = "Notified"
desc = arcpy.Describe(fc)
f = desc.fields
fields = [f.name for f in f if f.name != desc.OIDFieldName and f.type != 'Geometry' and f.name != desc.areaFieldName and f.name != desc.lengthFieldName]
for fld in fields:  
    fields.remove(fields)

arcpy.MakeQueryTable_management(fc, "tmp_table", "NO_KEY_FIELD")‍‍‍‍‍‍‍‍
arcpy.TableToExcel_conversion("tmp_table", Notified_xls) ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍
0 Kudos
14 Replies
2Quiker
Occasional Contributor II

Jake,

I get error on in TableToExcel     raise e ExecuteError: ERROR 000814: Invalid file type Failed to execute (TableToExcel) with ".xlsx"

If i change the output to ".xls" get "RuntimeError: Cannot find field ''.

I need this to run in side python in Arcmap not in a stand alone script. This will be made into a tool script.

import arcpy

arcpy.env.overwriteOutput = True
mxd = arcpy.mapping.MapDocument("CURRENT")
lyr = arcpy.mapping.ListLayers(mxd, "Export_Output")[0]

# Create a fieldinfo object
fieldInfo = arcpy.FieldInfo()

# Fields to Hide
hiddenFields = ('FID', 'Shape', 'OBJECTID', 'Shape_Leng', 'Shape_Area')

# Get the fields from the input
fields= arcpy.ListFields(lyr)
for field in fields:
    if field.name not in hiddenFields:
       fieldInfo.addField(field.name, field.name, "VISIBLE", "")
    else:
       fieldInfo.addField(field.name, field.name, "HIDDEN", "")

# Create table view
arcpy.MakeTableView_management(lyr, "Notif_view", "", "", fieldInfo)

# Export to Excel
arcpy.conversion.TableToExcel("Notif_view", r"C:\temp\Notif_view.xlsx")
                 
arcpy.RefreshActiveView()
arcpy.RefreshTOC()‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍
0 Kudos
JoeBorgione
MVP Emeritus

I shy away from field mapping as well. If you don't mind a hack, you could do a table to excel and then open your new excel worksheet and just delete the fields you don't want.....

That should just about do it....
2Quiker
Occasional Contributor II

Ya I agree i could just open the excel spreadsheet and delete them  if i were only doing it so often. I usually run this process about 10 times a week. So i was trying to make it as stream lined as possible.

DanPatterson_Retired
MVP Emeritus

Has anyone tried the editable property?  aka, only export those that are editable in conjunction with some of the others.  

editable
(Read and Write)

The editable state: True if the field is editable.

Boolean
JohannesBierer
Occasional Contributor III

A working possibility could be to convert to numpy array, then use pandas to convert the array to excel?

import arcpy
import pandas as pd

arcpy.env.overwriteOutput = True

inTable = r"yourpath\Export_Output.shp"

outTable1 = r"yourpath\export.xls"

fieldNames = ["OBJECTID", "PARCEL_NO", "OwnerName", "Address", "City", "State", "ZipCode"]

arr = arcpy.da.FeatureClassToNumPyArray(inTable, fieldNames)

df = pd.DataFrame(arr)

df1 = df.to_excel(outTable1, index=False)‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍
0 Kudos