Minion
Minion

Reputation: 135

Changing Excel Sheet every time python script runs

I need to change the sheet in an excel workbook, as many times as the code runs..Suppose my python scripts runs the first time and data gets saved in sheet A, next time when some application runs my script data should be saved in sheet B.Sheet A should be as it is in that workbook.. Is it posible ? If yes ,How? Here is my code:

#!/usr/bin/env python
import subprocess
import xlwt
process=subprocess.Popen('Test_Project.exe',stdout=subprocess.PIPE)
out,err = process.communicate()
wb=xlwt.Workbook()
sheet=wb.add_sheet('Sheet_A') #next time it should save in Sheet_B
row = 0
for line in out.split('\n'): 
    for i,wrd in enumerate(line.split()):    
        if not wrd.startswith("***"):
            print wrd   
        sheet.write(row,i,wrd)
    row=row+1

wb.save('DDS.xls') 

Any help is appreciated...

Upvotes: 1

Views: 2257

Answers (1)

Mike Müller
Mike Müller

Reputation: 85482

I would recommend using openpyxl. It can read and write xlsx files. If needed, you can always convert them to xls with Excel or Open/LibreOffice, assuming you have only one big file at the end.

This script creates a new Excel file if none exists and adds a new sheet every time it is run. I use the index + 1 as the sheet name (title) starting with 1. The numerical index starts at 0. You will end up with a file that has sheets named 1, 2, 3 etc. Every time you write your data into the last sheet.

import os

from openpyxl import Workbook
from openpyxl.reader.excel import load_workbook

file_name = 'test.xlsx'

if os.path.exists(file_name):
    wb = load_workbook(file_name)
    last_sheet = wb.worksheets[-1]
    index = int(last_sheet.title)
    ws = wb.create_sheet(index)
    ws.title = str(index + 1)
else:
    wb = Workbook()
    ws = wb.worksheets[0]
    ws.title = '1'
ws.cell('A2').value= 'new_value'
wb.save(file_name)

Upvotes: 1

Related Questions