trabajar manejo archivos python excel csv spreadsheet

manejo - Python-Escribir en hojas de cálculo de Excel



pandas python (8)

CSV significa valores separados por comas. CSV es como un archivo de texto y se puede crear simplemente agregando la extensión .CSV

por ejemplo escriba este código:

f = open(''example.csv'',''w'') f.write("display,variable x") f.close()

puedes abrir este archivo con excel.

Soy nuevo en Python. Necesito escribir algunos datos de mi programa en una hoja de cálculo. He buscado en línea y parece que hay muchos paquetes disponibles (xlwt, XlsXcessive, openpyxl). Otros sugieren escribir en un archivo csv (nunca usó csv y realmente no entiende de qué se trata).

El programa es muy simple. Tengo dos listas (flotante) y tres variables (cadenas). No conozco la longitud de las dos listas y probablemente no tengan la misma longitud.

Quiero que el diseño sea como en la imagen a continuación:

La columna rosa tendrá los valores de la primera lista y la columna verde tendrá los valores de la segunda lista.

Entonces, ¿cuál es la mejor manera de hacer esto? Gracias.

PD. Estoy ejecutando Windows 7 pero no necesariamente tendré Office instalado en las computadoras que ejecutan este programa.

EDITAR

import xlwt x=1 y=2 z=3 list1=[2.34,4.346,4.234] book = xlwt.Workbook(encoding="utf-8") sheet1 = book.add_sheet("Sheet 1") sheet1.write(0, 0, "Display") sheet1.write(1, 0, "Dominance") sheet1.write(2, 0, "Test") sheet1.write(0, 1, x) sheet1.write(1, 1, y) sheet1.write(2, 1, z) sheet1.write(4, 0, "Stimulus Time") sheet1.write(4, 1, "Reaction Time") i=4 for n in list1: i = i+1 sheet1.write(i, 0, n) book.save("trial.xls")

Escribí esto usando todas tus sugerencias. Hace el trabajo pero puede mejorarse ligeramente. ¿Cómo puedo formatear las células creadas en el ciclo for (valores list1) como científico o como número? No quiero truncar los valores. Los valores reales utilizados en el programa tendrían alrededor de 10 dígitos después del decimal.


Intente echar un vistazo a las siguientes bibliotecas también:

xlwings : para obtener datos dentro y fuera de una hoja de cálculo de Python, así como para manipular libros de trabajo y gráficos

ExcelPython : un complemento de Excel para escribir funciones definidas por el usuario (UDF) y macros en Python en lugar de VBA


La manera más fácil de importar los números exactos es agregar un decimal después de los números en su l1 y l2. Python interpreta este punto decimal como instrucciones de usted para incluir el número exacto. Si necesita restringirlo a algún lugar decimal, debería poder crear un comando de impresión que limite el resultado, algo simple como:

print variable_example [: 13]

Lo restringiría al décimo lugar decimal, suponiendo que sus datos tienen dos enteros a la izquierda del decimal.


Usa DataFrame.to_excel de pandas . Pandas le permite representar sus datos en estructuras de datos funcionalmente ricas y también le permitirá leer en archivos de Excel.

Primero tendrá que convertir sus datos en un DataFrame y luego guardarlos en un archivo Excel así:

In [1]: from pandas import DataFrame In [2]: l1 = [1,2,3,4] In [3]: l2 = [1,2,3,4] In [3]: df = DataFrame({''Stimulus Time'': l1, ''Reaction Time'': l2}) In [4]: df Out[4]: Reaction Time Stimulus Time 0 1 1 1 2 2 2 3 3 3 4 4 In [5]: df.to_excel(''test.xlsx'', sheet_name=''sheet1'', index=False)

y el archivo de Excel que sale se ve así:

Tenga en cuenta que ambas listas deben ser de la misma longitud, de lo contrario, los pandas se quejarán. Para resolver esto, reemplace todos los valores perdidos con None .


openpyxl algunos módulos de Excel para Python, y descubrí que openpyxl es el mejor.

El libro gratuito Automate the Boring Stuff with Python tiene un capítulo sobre openpyxl con más detalles o puede consultar el sitio openpyxl . No necesitará Office o Excel instalado para usar openpyxl.

Tu programa se vería así:

import openpyxl wb = openpyxl.load_workbook(''example.xlsx'') sheet = wb.get_sheet_by_name(''Sheet1'') stimulusTimes = [1, 2, 3] reactionTimes = [2.3, 5.1, 7.0] for i in range(len(stimulusTimes)): sheet[''A'' + str(i + 6)].value = stimulusTimes[i] sheet[''B'' + str(i + 6)].value = reactionTimes[i] wb.save(''example.xlsx'')


import xlsxwriter # Create an new Excel file and add a worksheet. workbook = xlsxwriter.Workbook(''demo.xlsx'') worksheet = workbook.add_worksheet() # Widen the first column to make the text clearer. worksheet.set_column(''A:A'', 20) # Add a bold format to use to highlight cells. bold = workbook.add_format({''bold'': True}) # Write some simple text. worksheet.write(''A1'', ''Hello'') # Text with formatting. worksheet.write(''A2'', ''World'', bold) # Write some numbers, with row/column notation. worksheet.write(2, 0, 123) worksheet.write(3, 0, 123.456) # Insert an image. worksheet.insert_image(''B5'', ''logo.png'') workbook.close()


import xlwt def output(filename, sheet, list1, list2, x, y, z): book = xlwt.Workbook() sh = book.add_sheet(sheet) variables = [x, y, z] x_desc = ''Display'' y_desc = ''Dominance'' z_desc = ''Test'' desc = [x_desc, y_desc, z_desc] col1_name = ''Stimulus Time'' col2_name = ''Reaction Time'' #You may need to group the variables together #for n, (v_desc, v) in enumerate(zip(desc, variables)): for n, v_desc, v in enumerate(zip(desc, variables)): sh.write(n, 0, v_desc) sh.write(n, 1, v) n+=1 sh.write(n, 0, col1_name) sh.write(n, 1, col2_name) for m, e1 in enumerate(list1, n+1): sh.write(m, 0, e1) for m, e2 in enumerate(list2, n+1): sh.write(m, 1, e2) book.save(filename)

para más explicaciones: https://github.com/python-excel


  • xlrd / xlwt (estándar): Python no tiene esta funcionalidad en su biblioteca estándar, pero creo que xlrd/xlwt es la forma "estándar" de leer y escribir archivos de Excel. Es bastante fácil crear un libro de trabajo, agregar hojas, escribir datos / fórmulas y formatear celdas. Si necesita todas estas cosas, puede tener el mayor éxito con esta biblioteca. Creo que podrías elegir openpyxl en su lugar y sería bastante similar, pero no lo he usado.

    Para formatear celdas con xlwt, defina un XFStyle e incluya el estilo cuando escriba en una hoja. Aquí hay un ejemplo con muchos formatos numéricos . Vea el código de ejemplo a continuación.

  • Tablib (poderoso, intuitivo): Tablib es una biblioteca más poderosa pero intuitiva para trabajar con datos tabulares. Puede escribir libros de trabajo de Excel con varias hojas y otros formatos, como csv, json y yaml. Si no necesita celdas formateadas (como el color de fondo), se hará un favor para usar esta biblioteca, lo que lo llevará más lejos en el largo plazo.

  • csv (fácil): los archivos en su computadora son de texto o binarios . Los archivos de texto son solo caracteres, incluidos los especiales, como nuevas líneas y pestañas, y se pueden abrir fácilmente en cualquier lugar (por ejemplo, bloc de notas, su navegador web o productos de Office). Un archivo csv es un archivo de texto que está formateado de cierta manera: cada línea es una lista de valores, separados por comas. Los programas de Python pueden leer y escribir textos con facilidad, por lo que un archivo csv es la manera más fácil y rápida de exportar datos de su programa python a excel (u otro programa python).

    Los archivos de Excel son binarios y requieren bibliotecas especiales que conozcan el formato de archivo, razón por la cual necesita una biblioteca adicional para Python, o un programa especial como Microsoft Excel, Gnumeric o LibreOffice, para leerlos / escribirlos.

import xlwt style = xlwt.XFStyle() style.num_format_str = ''0.00E+00'' ... for i,n in enumerate(list1): sheet1.write(i, 0, n, fmt)