mutagen eyed3 python excel filestream openpyxl

python - eyed3 - Guardando el archivo openpyxl vía texto y filestream



id3v2 4 python (3)

Estoy creando OpenPyXL en una aplicación que espera una cadena que contenga el contenido del archivo de Excel, para que pueda escribir a través del flujo de archivos.

Desde mi investigación sobre el código fuente de OpenPyXL, no parece que admita este tipo de salida. ¿Alguien tiene alguna experiencia con la modificación de openpyxl para admitir esto?

¿O algún consejo general / soluciones?

Gracias.


¿Qué pasa con el uso de un objeto StringIO para guardar el contenido del archivo:

from openpyxl.workbook import Workbook from StringIO import StringIO output = StringIO() wb = Workbook() wb.save(output) print output.getvalue()

La cadena que está buscando es lo que se está imprimiendo en la última línea de este ejemplo.


En openpyxl 2.6, llamar al método save_virtual_workbook emite la siguiente advertencia:

DeprecationWarning: Call to deprecated function save_virtual_workbook (Use a NamedTemporaryFile).

En algún momento, save_virtual_workbook se eliminará de openpyxl.

En Python 3, el uso típico para guardar un libro openpyxl en un flujo de archivos se convierte en:

from io import BytesIO from tempfile import NamedTemporaryFile from openpyxl import Workbook wb = Workbook() with NamedTemporaryFile() as tmp: wb.save(tmp.name) output = BytesIO(tmp.read())


La respuesta de jcollado es realmente válida, pero también hay una función (lamentablemente no documentada todavía) llamada "save_virtual_workbook" en openpyxl.writer.excel que tomará su libro de trabajo y lo devolverá como una cadena:

from openpyxl.workbook import Workbook from openpyxl.writer.excel import save_virtual_workbook wb = Workbook() print save_virtual_workbook(wb)

Lo que estás buscando es la cadena devuelta por save_virtual_workbook ()