0

I am newbie. I try to write data in existing excel file. When I run on robotframework, it display "No keyword with name 'Write To Excel File' found". So could you help me to fix my code or give me suggestion to me?

import xlwt
from xlutils.copy import copy

class Excel(object):

    def __init__(self):
        print "write to excel file"

    def group(self,lst, n):

         return ([lst[i:i+n] for i in range(0,len(lst),n)])
    def write_to_excel_file(self,filename,content_list):

            # Existing Excel File
            w = copy(filename)
            b = w.get_sheet(0)

            # Create an new Excel file and add a worksheet.
            #workbook = xlwt.Workbook()
            #worksheet = workbook.add_sheet('wb')

            #content_lists=[1,1,'hello',2,1,'brother',3,1,'how are you',4,1,'are you good today']
            t=self.group(content_list,3)
            #print(t)
            for item in t:
                b.write(int(item[0]), int(item[1]), item[2])


            # close work book
                w.save(filename)
3
  • be careful you're calling w.save(filename) in the loop. Commented Jan 26, 2017 at 14:18
  • 1
    Suddenly what happened , yesterday you were able to call that :) Commented Jan 26, 2017 at 14:28
  • @Jean-François Fabre Thank you for your suggestion. Commented Jan 26, 2017 at 15:17

1 Answer 1

3

Let me know if this works for you

import xlwt
from xlutils.copy import copy
import xlrd
import os.path

class Excel(object):

    def __init__(self):
        print "write to excel file"

    def group(self,lst, size):
        return ([lst[i:i+size] for i  in range(0, len(lst), size)])

    def write_to_excel_file(self,filename,content_list):
        if not os.path.exists(filename):
            workbook = xlwt.Workbook() # Create an new Excel file and add a worksheet.
            worksheet = workbook.add_sheet('wb') #add worksheet
            workbook.save(filename)
        rb = xlrd.open_workbook(filename,formatting_info=True)
        r_sheet = rb.sheet_by_index(0) 
        r = r_sheet.nrows
        wb = copy(rb) 
        sheet = wb.get_sheet(0)
        t=self.group(content_list,3)
        for item in t:
            sheet.write(int(item[0]), int(item[1]), item[2])
        wb.save(filename)

RIDE test cases

*** Settings ***
Library           Collections
Library           WriteExcel.Excel

*** Variables ***

*** Test Cases ***
Write Excel Test first
    [Tags]
    @{content}    Create List
    Append To List    ${content}    15    1    Test Case 1
    Append To List    ${content}    16    1    Test Case 2
    Append To List    ${content}    17    1    Test Case 3
    Append To List    ${content}    18    1    Test Case 4
    Write To Excel File    test3.xls    ${content}
    log    @${content}

Write Excel Test Second
    [Tags]
    @{content}    Create List
    Append To List    ${content}    25    1    Test Case 11
    Append To List    ${content}    26    1    Test Case 12
    Append To List    ${content}    27    1    Test Case 13
    Append To List    ${content}    28    1    Test Case 14
    Write To Excel File    test3.xls    ${content}
    log    @${content}
Sign up to request clarification or add additional context in comments.

3 Comments

@Shijo I have a problem when I use with ExcelLibrary. It display IOError: [Errno 22] invalid mode ('w+b') or filename: u'test3.xls'. Can you help me to solve this problem? *** Settings *** Library Collections Library WriteExcel.Excel Library ExcelLibrary *** Variables *** *** Test Cases *** Write Excel Test first Open Excel Current Directory test3.xls @{content} Create List Append To List ${content} 15 1 Test Case 1 Write To Excel File test3.xls ${content} log @${content}
looks like your file may be open somewhere else. close that and try again
@Shijo Does it relate with Open Excel Current Directory?Because I think I already closed excel file.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.