Return the excel writer

0

I have a window to open or save an excel and what I pretend is that when I save the excel this modal I return the content of the excel, that is, the writer to be able to add modifications to that excel. My code is as follows:

import pandas as pd
from PyQt5.QtWidgets import QFileDialog, QWidget, QPushButton, QGridLayout, 
QLabel
from PyQt5.QtCore import QFileInfo, QTimer
import xlrd
import traceback
import tempfile
import datetime
import os

'''
Metodo para exportar los resultados de la tabla
'''
def exportar(contenidoTabla):
   try:
      df = pd.DataFrame(contenidoTabla.listaDatosExportar, 
           columns=contenidoTabla.columnas)
    return modalExportacion(df)

except:
    print("excelUtil.py.- exportar. No se ha podido exportar el fichero: "  
    + traceback.format_exc())


def exportarDf(self, df):
    try:
       exportar = modalExportacion(df)
       exportar.exec_()
       return exportar.getWriter()
    except:
       print("No se ha podido exportar el fichero")

'''
Modal de exportacion
'''
class modalExportacion(QDialog):

  def __init__(self, df): 
    QDialog.__init__(self)

    self.df = df
    self.ruta = ""
    self.fichero_actual = ""
    self.writer = None
    self.setWindowTitle("Exportacion a excel")

    contenedor = QGridLayout()
    self.setLayout(contenedor)

    label_3 = QLabel()
    label_3.setObjectName("label_3")
    label_3.setText("Desea abrir o guardar el excel?")
    contenedor.addWidget(label_3, 1, 0)

    btnAbrir = QPushButton("Abrir",None)
    contenedor.addWidget(btnAbrir,2, 0)
    btnAbrir.clicked.connect(self.abrir)

    btnGuardar = QPushButton("Guardar",None)
    contenedor.addWidget(btnGuardar, 2, 1)
    btnGuardar.clicked.connect(self.guardar)

    self.show()


  def abrir(self):
    nombreFichero = "Temporal"+datetime.datetime.now().isoformat()+".xlsx"
    handle, fn = tempfile.mkstemp(suffix='.xlsx')
    self.writer = pd.ExcelWriter(nombreFichero, engine='openpyxl')
    self.df.toexcel(self.writer)

  def guardar(self):
    options = QFileDialog.Options()
    fileName, _ = QFileDialog.getSaveFileName(self,"Guardar 
    como...","","Excel (*.xls);;Todos los tipos (*)", options=options)
    if fileName:
        self.writer = pd.ExcelWriter(fileName, engine='xlsxwriter')
        self.df.to_excel(self.writer, sheet_name='Sheet1')

def getWriter(self):
    return self.writer

I call this modal in the following way:

writer = exportarDf(None, df)

Which makes it enter the following method of the class:

def exportarDf(self, df):
    try:
       exportar = modalExportacion(df)
       exportar.exec_()
       return exportar.getWriter()
    except:
       print("No se ha podido exportar el fichero")

My problem is that when I do:

modalExportacion.getWriter()

This returns it to None.

    
asked by Adriana_0_0 05.09.2018 в 09:18
source

0 answers