skrowten_hermit
skrowten_hermit

Reputation: 445

Unable to see the created .xlsx file in the directory

I had generated a few values and had populated them into a spreadsheet using xlsxwriter. This is how I did it:

class main1():
    .
    .
    .
    .
    def fun1():
        workbook = xlsxwriter.Workbook(self.Output_fold+'Test'+time.strftime("%H_%M_%S_%d_%m_%Y")+'.xlsx')
        worksheet_A = workbook.add_worksheet('Sheet_A')
        .
        .
        worksheet_A.write(row,col,<val>)
        .
        .
        workbook.close()

Now, since I had to make multiple writes, and added more complex logic, I decided to have another function introduced fun2 which would write the values accordingly. The new logic requires generating values in fun1 as well as fun2 (by calling another function fun3). So, I decided to replace variables workbook etc with self.workbook and likewise. My modified script looks like this :

main_file.py

import xlsxwriter
import libex
import os
import time
import sys
import string

class main_cls():
    def __init__(self):
        self.i=0
        self.t1=""
        self.t2=""
        pwd=os.getcwd().split('\\')
        base='\\'.join(pwd[0:len(pwd)-1])+'\\'
        print base
        self.Output_fold=base+"Output\\"
        self.Input_fold=base+"Input\\"
        self.workbook=xlsxwriter.Workbook(self.Output_fold+'Test_'+time.strftime("%H_%M_%S_%d_%m_%Y")+'.xlsx')
        self.worksheet_A = self.workbook.add_worksheet('Sheet_A')
        self.worksheet_A.write(self.i,self.i,"Text 1")
        self.worksheet_A.write(self.i,self.i+1,"Text 2")
        self.i+=1
    def fun1(self):
        self.t1="1"
        self.t2="2"
        self.worksheet_A.write(self.i,self.i,self.t1)
        self.worksheet_A.write(self.i,self.i+1,self.t2)
        self.i+=1
        self.eg=libex.exlib()
        self.t1=self.eg.gen(0)
        self.t2=self.eg.gen(0)
        self.fun2()
        self.workbook.close()
    def fun2(self):
        if option==1:
            self.fun3()
    def fun3(self):
        self.t1=self.eg.gen(0)
        self.t2=self.eg.gen(1)
        self.worksheet_A.write(self.i,self.i,self.t1)
        self.worksheet_A.write(self.i,self.i+1,self.t2)
        self.i+=1

option=int(sys.argv[1])
if len(sys.argv)==2:
    p=main_cls()
    if option==1:
        p.fun1()
    else:
        pass
else:
    print "Wrong command"

libex.py

class exlib():
    def __init__(self):
        self.a="duh"
    def gen(self,x):
        if int(x)==0:
            return(self.a)
        elif int(x)==1:
            self.a=str(self.a+" "+self.a+" "+self.a+" !!!")
            return(self.a)

Now, this works in this particular case but in the actual code, it doesn't. The file itself is not getting created in the output directory. Then, I added the following line:

    print "Workbook created at path : ",self.workbook.filename

to see if the file is getting created and it surprisingly showed with full path!!!

Where could I be going wrong here and how can I get this fixed?

UPDATE1: I played around a bit with it and found that removing self from self.workbook moving workbook to __init__(self) creates the file with the initial values populated.

UPDATE2: Have replicated my code in a minimal way as suggested. And this one works pretty well!!!

Upvotes: 1

Views: 241

Answers (1)

Rumpelstiltskin Koriat
Rumpelstiltskin Koriat

Reputation: 421

Tried to reproduce, file is being created just fine, maybe you have a problem with the self.Output_fold variable, or with file permissions or with your code editor's file explorer.

Upvotes: 2

Related Questions