write with parser open library exportar best python excel xlrd xlwt

python - with - Edite hojas de trabajo y hojas de Excel existentes con xlrd y xlwt



write excel with python (2)

En la documentación para xlrd y xlwt aprendí lo siguiente:

Cómo leer de libros de trabajo / hojas existentes:

from xlrd import open_workbook wb = open_workbook("ex.xls") s = wb.sheet_by_index(0) print s.cell(0,0).value #Prints contents of cell at location a1 in the first sheet in the document called ex.xls

Cómo crear nuevos libros de trabajo / hojas:

from xlwt import Workbook wb = Workbook() Sheet1 = wb.add_sheet(''Sheet1'') Sheet1.write(0,0,''Hello'') wb.save(''ex.xls'') #Creates a document called ex.xls with a worksheet called "Sheet1" and writes "Hello" to the cell located at a1

Lo que quiero hacer ahora es abrir una hoja de trabajo existente, en un libro de trabajo existente y escribir en esa hoja.

He intentado algo como:

from xlwt import open_workbook wb = open_workbook("ex.xls") s = wb.sheet_by_index(0) print s.cell(0,0).value

pero open_workbook es solo una parte del módulo xlrd , no xlwt .

¿Algunas ideas?

Edit1: después de la sugerencia de Olivers busqué en xlutils e intenté lo siguiente:

from xlrd import open_workbook from xlwt import Workbook from xlutils.copy import copy wb = open_workbook("names.xls") s = wb.get_sheet(0) s.write(0,0,''A1'') wb.save(''names.xls'')

Sin embargo, esto me da el siguiente mensaje de error:

File "C:/Python27/lib/site-packages/xlrd/book.py", line 655, in get_sheet raise XLRDError("Can''t load sheets after releasing resources.") xlrd.biffh.XLRDError: Can''t load sheets after releasing resources.

Editar 2: el mensaje de error se debió al uso incorrecto de la función get_sheet . Finalmente descubrió cómo usarlo:

from xlrd import open_workbook from xlwt import Workbook from xlutils.copy import copy rb = open_workbook("names.xls") wb = copy(rb) s = wb.get_sheet(0) s.write(0,0,''A1'') wb.save(''names.xls'')


Como escribí en las ediciones de la op, para editar los documentos existentes de Excel debes usar el módulo xlutils (Gracias Oliver)

Esta es la forma correcta de hacerlo:

#xlrd, xlutils and xlwt modules need to be installed. #Can be done via pip install <module> from xlrd import open_workbook from xlutils.copy import copy rb = open_workbook("names.xls") wb = copy(rb) s = wb.get_sheet(0) s.write(0,0,''A1'') wb.save(''names.xls'')

Esto reemplaza el contenido de la celda ubicada en a1 en la primera hoja de "names.xls" con el texto "a1", y luego guarda el documento.


Aquí hay otra forma de hacer el código anterior usando el módulo openpyxl que es compatible con xlsx y xlsm. Por lo que he visto hasta ahora, también sigue formateando.

from openpyxl import load_workbook wb = load_workbook(''names.xlxs'') ws = wb[''SheetName''] ws[''A1''] = ''A1'' wb.save(''names.xlxs'')