6 votos

¿Guardar *.dbf como *.xls utilizando Python?

Me han soltado en el curro para aprender python para hacer cosas en Arcmap 10. Así que estoy aprendiendo python sobre la marcha e intentando recordar la programación que he hecho.

Donde estoy en este proyecto es convertir un dbf, o csv, xls de una manera sencilla. A partir de ahí, todos los archivos se copiarán juntos en un solo archivo. Tengo el todo-en-uno xls de trabajo, pero no puedo encontrar un fácil, simple dbf a xls solución.

He condensado el código que se encuentra aquí: http://blog.gmane.org/gmane.comp.python.education/page=12

dentro:

from xlwt import Workbook
import dbfpy.dbf

input0 = '...file.dbf'
output = '...file.xls'

def test1():
    dbf = dbfpy.dbf.Dbf(input0)
    book = Workbook()
    sheet1 = book.add_sheet('Sheet 1')
    for row in range(len(dbf)):
        for col in range(2):#chop to two for my purposes, gm 
            sheet1.row(row).write(col, dbf[row][col])
    book.save(output)

test1()

Esto funciona, menos la falta de nombres de campo.

2 votos

Dado que Excel abre archivos DBF directamente, sin pérdida de información, ¿por qué es necesario realizar una conversión?

0 votos

¿has usado arcmap ultimamente? el quickexport_interop no soporta xls o xlsx. dbfpy one hace una hoja (creo). csv solo tiene una hoja, tambien. Estoy tratando de resumir muchos archivos a la vez, algunos con 10k + filas. Dentro de arcmap con el archivo abierto, esto toma demasiado tiempo.

0 votos

Para aclarar las cosas: sí, sé que excel puede abrir dbf y csv. si puedo obtener resultados de QuickExport en xls, sé cómo combinarlos por columna en un archivo. aceptaré sugerencias para combinar dbf, pero aún así necesitaré que acabe en xls. una vez hecho esto, el archivo se pondrá bonito, se formateará y se enviará a clientes, directores, etc.

9voto

Arda Xi Puntos 1099

Como dice whuber, hay que escribir las cabeceras explícitamente. He cargado dbfpy et xlwt en un virtualenv y comprobé esto:

from xlwt import Workbook, easyxf
import dbfpy.dbf
from time import time

def test1():
    dbf = dbfpy.dbf.Dbf("pipelines.dbf", readOnly = True)

    header_style = easyxf('font: name Arial, bold True, height 200;')

    book = Workbook()
    sheet1 = book.add_sheet('Sheet 1')

    for (i, name) in enumerate(dbf.fieldNames):
        sheet1.write(0, i, name, header_style)

    for (i, thecol) in enumerate(dbf.fieldDefs):
        name, thetype, thelen, thedec = str(thecol).split()
        colwidth = max(len(name), int(thelen))
        sheet1.col(i).width = colwidth * 310

    for row in range(1,len(dbf)):
        for col in range(len(dbf.fieldNames)):
            sheet1.row(row).write(col, dbf[row][col])

    book.save("pipelines-xls.xls")

if __name__ == "__main__":
    start = time()
    test1()
    end = time()
    print end - start

Esto me da encabezados en mi xls:

enter image description here

0 votos

Gracias! estaba jugando con las cosas, pero para (i, nombre) en enumerate(dbf.fieldNames): sheet1.write(0, i, nombre) era lo que estaba intentando con mucho fracaso. no puedo upvote, lo siento.

0 votos

@gm70560 - Si esto realmente respondió a la pregunta, por favor marcar como respondida .

0 votos

@ Chad Cooper- ahí tienes tu upvote.

2voto

UnkwnTech Puntos 21942

En ArcGIS 10.2 para Desktop una nueva herramienta llamada Tabla a Excel (conversión) para exportar una tabla a un archivo Excel.

Resumen

Convierte una tabla en un archivo de Microsoft Excel.

Utilización

- Table To Excel sólo puede convertir a Microsoft Excel 5.0/95 (.xls).

En consecuencia, su código Python ahora puede ser a veces tan simple como:

arcpy.TableToExcel_conversion("C:/temp/SumStats.dbf","C:/temp/test.xls","NAME","CODE")

0voto

Rich Puntos 614

Exportar una tabla Excel a formato .dbf en ArcGIS.

En Excel 2007, guarde la tabla como "Libro de Excel 97-2003" (formato .xls).
Navegue hasta la ubicación de la tabla .xls a través de ArcCatalog y expanda el archivo para ver las hojas de trabajo.
Haga clic con el botón derecho del ratón en la hoja de cálculo que representa la tabla. Seleccione Exportar > A dBase (simple).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X