No puedo encontrar ejemplos donde xlwt se usa para escribir en archivos existentes. Tengo un archivo xls existente en el que debo escribir. Cuando uso xlrd para leer el archivo, no puedo entender cómo transformar el tipo "Libro" devuelto en un xlwt.Workbook. Agradecería que alguien me señale un ejemplo.escribiendo en el libro existente usando xlwt
Respuesta
I am unable to find examples where xlwt is used to write into existing files.
No hay ejemplos. No es posible. No con xlwt, ni con ningún otro software. La estructura del archivo XLS es complicada y no actúa como una base de datos a la que puede agregar filas en una tabla de su elección.
Cualquier software que use debe hacer como un usuario con una copia de Excel y un teclado: (1) "abrir el archivo", es decir, cargar los contenidos en la memoria (2) manipular la información en la memoria (3) " save "(que elimina el archivo existente y lo reemplaza con un nuevo archivo) o" save as "(que escribe un nuevo archivo y no modifica el archivo existente).
I told you this hace cerca de 12 horas, pero aquí está de nuevo:
Visita this summary site.
Puntos de interés:
xlutils paquete
tutorial sobre XLRD, xlwt y xlutils ... contiene ejemplos/lista de correo
google-grupo de hacer preguntas como esta (ayuda a haber trabajado en el tutorial primero)
Necesita xlutils.copy
. Intentar algo como esto:
from xlutils.copy import copy
w = copy('book1.xls')
w.get_sheet(0).write(0,0,"foo")
w.save('book2.xls')
Tenga en cuenta que no se puede sobrescribir las células de forma predeterminada como se señala en this question.
Aquí hay un código de muestra que utilicé recientemente para hacer justamente eso.
Abre un libro de trabajo, va por las filas, si se cumple una condición, escribe algunos datos en la fila. Finalmente guarda el archivo modificado.
from xlutils.copy import copy # http://pypi.python.org/pypi/xlutils
from xlrd import open_workbook # http://pypi.python.org/pypi/xlrd
from xlwt import easyxf # http://pypi.python.org/pypi/xlwt
START_ROW = 297 # 0 based (subtract 1 from excel row number)
col_age_november = 1
col_summer1 = 2
col_fall1 = 3
rb = open_workbook(file_path,formatting_info=True)
r_sheet = rb.sheet_by_index(0) # read only copy to introspect the file
wb = copy(rb) # a writable copy (I can't read values out of this, only write to it)
w_sheet = wb.get_sheet(0) # the sheet to write to within the writable copy
for row_index in range(START_ROW, r_sheet.nrows):
age_nov = r_sheet.cell(row_index, col_age_november).value
if age_nov == 3:
#If 3, then Combo I 3-4 year old for both summer1 and fall1
w_sheet.write(row_index, col_summer1, 'Combo I 3-4 year old')
w_sheet.write(row_index, col_fall1, 'Combo I 3-4 year old')
wb.save(file_path + '.out' + os.path.splitext(file_path)[-1])
esto debería haber sido aceptada la respuesta – chefsmart
Gracias. Esta es una respuesta muy útil. – Jubbles
@chefsmart Sí, debería haber sido. Además, Greg respondió sin ser un idiota. 1 ¿No – RaytheonLiszt
El ejemplo de código es exactamente esto:
from xlutils.copy import copy
from xlrd import *
w = copy(open_workbook('book1.xls'))
w.get_sheet(0).write(0,0,"foo")
w.save('book2.xls')
Tendrá que crear book1.xls para poner a prueba, pero se entiende la idea.
Tuve el mismo problema. Mi cliente me ordenó la secuencia de comandos Python 3.4 que actualiza los archivos de Excel XLS (no XLSX).
El primer paquete xlrd fue instalado por "instalación de pip" sin problemas en mi casa de Python.
La segunda xlwt necesitaba decir "pip install xlwt-future" para ser compatible.
La 3ra uno xlutils no tiene soporte para Python 3, pero adaptado un poco y ahora se trabaja por lo menos para la escritura ficticia:
#!C:\Python343\python
from xlutils.copy import copy # http://pypi.python.org/pypi/xlutils
from xlrd import open_workbook # http://pypi.python.org/pypi/xlrd
from xlwt import easyxf # http://pypi.python.org/pypi/xlwt
file_path = 'C:\Dev\Test_upd.xls'
rb = open_workbook('C:\Dev\Test.xls',formatting_info=True)
r_sheet = rb.sheet_by_index(0) # read only copy to introspect the file
wb = copy(rb) # a writable copy (I can't read values out of this, only write to it)
w_sheet = wb.get_sheet(0) # the sheet to write to within the writable copy
w_sheet.write(1, 1, 'Value')
wb.save(file_path)
Os adjunto el archivo aquí: http://ifolder.su/43507580
Escriba a [email protected] si se venció.
P.S .: Algunas funciones no son llamados en el ejemplo ficticio, así que tal vez van a necesitar para una adaptación también. Quién quiere hacerlo, arregle las excepciones una a una con ayuda de google. No es una tarea muy difícil, debido a que el código de paquete es pequeño ...
I openpyxl
# -*- coding: utf-8 -*-
import openpyxl
file = 'sample.xlsx'
wb = openpyxl.load_workbook(filename=file)
# Seleciono la Hoja
ws = wb.get_sheet_by_name('Hoja1')
# Valores a Insertar
ws['A3'] = 42
ws['A4'] = 142
# Escribirmos en el Fichero
wb.save(file)
Aunque este código podría resolver el problema, siempre debe explicar lo que hace y por qué lo ayuda. – BDL
- 1. escribiendo texto largo en el libro de trabajo de excel usando el error de interpo throws?
- 2. Python xlwt: acceder al contenido de celda existente, ajustar automáticamente el ancho de la columna
- 3. ¿Cómo puedo modificar un libro de Excel existente con Perl?
- 4. usando liquibase en el esquema existente
- 5. obtener el objeto libro actual en C#
- 6. django excel xlwt
- 7. Escribiendo un Comprobador SSL usando Java
- 8. Escribiendo pestañas en un archivo usando PowerShell
- 9. Escribiendo% ~ DP0 en el Registro usando REG ADD
- 10. ¿Crear un libro Kindle programáticamente usando C#?
- 11. intento Python XLWT sobrescribir solución celular
- 12. cómo copiar una hoja de libro a otra hoja de libro de trabajo usando apache POI y java
- 13. Escribiendo registros en el archivo
- 14. Escribiendo en el archivo (Prolog)
- 15. Escribiendo archivos de gran tamaño usando BufferedOutputStream
- 16. ImportError: No hay módulo llamado xlwt
- 17. Al abrir un libro guardado, el libro actual arroja excepciones
- 18. Escribiendo modelos MySQL Node.js usando node-mysql
- 19. Insertar página en PDF existente usando itextsharp
- 20. edita el estilo en línea existente usando jquery?
- 21. Escribiendo en archivos Excel en ruby usando roo gem
- 22. Escribiendo el combinador Y
- 23. render el libro epub en android?
- 24. Preformato de moneda y dos decimales en python usando xlwt para excel
- 25. Python - Xlwt más de 256 columnas
- 26. Escribiendo al flujo de error en Powershell usando Write-Error
- 27. escribiendo en/system/framework en el emulador
- 28. escribiendo en IplImage imageData
- 29. Desasignación de XML al objeto existente usando JAXB
- 30. Python Excel (xlrd, xlwt) - Cómo copiar un estilo desde una celda y ponerlo en otro
Gracias. V informativo y quise decir antes - los enlaces son muy útiles. –
aceptando - sí. upvote, no se dio cuenta hasta ahora - THX no parece xlutils.copy La función() para preservar las hojas de trabajo con las tablas dinámicas. ¿Hay alguna solución? –
ya he respondido a su pregunta sobre las tablas dinámicas: Nº –