in reply to Re: Excel::Writer::XLSX -> get the active sheet
in thread Excel::Writer::XLSX -> get the active sheet

Sorry, CountZero, but I don't quite get what you want to tell me. I'm not a native english speaker so sometimes I miss some meaning. But I'll try my best.

The workbook class has a method to set the active sheet. Sure this currently just has meaning to Excel itself, when you open the file. It's just the first sheet which appears. Once you've opened Excel, you can make any sheet the active when. It will always be the one you're working on.

In applications it is not really required to know which sheet is the active one. The problem is that you always need to know the sheet you work on and often you also need to know the workbook you are working in.

So my idea was that I always work on just one (the "active") sheet, which is known to the workbook, and hand over just the workbook to my procedures.

A better, or more useful approach might have been to have, in every worksheet, information about their workbook. But this would lead to circular references, as the developer told me, which would mess some things up (if I understood correctly).

I hope this answers your question?


s$$([},&%#}/&/]+}%&{})*;#$&&s&&$^X.($'^"%]=\&(|?*{%
+.+=%;.#_}\&"^"-+%*).}%:##%}={~=~:.")&e&&s""`$''`"e

Replies are listed 'Best First'.
Re^3: Excel::Writer::XLSX -> get the active sheet
by CountZero (Bishop) on Feb 01, 2014 at 12:50 UTC
    It is exactly as you said. The "activesheet" property has no meaning outside of Excel itself. It is the worksheet that is "on top" on your screen and where you can interact with. In Excel::Writer::XLSX that has no meaning, since you have to explicitly choose the worksheet you are working on. You can store that information in any variable and pass that variable to any subroutine you have written. Handing the whole workbook to your subroutine and relying on some (hidden) "activesheet" property to know on which worksheet it needs to work, seems not a good idea to me.

    If your subroutine also needs to know in which workbook that worksheet resides, hand it a reference to both the workbook and the worksheet (i.e. the wokbook obkject and the number of the worksheet). As it is impossible to access a worksheet without knowing in which workbook it resides, you will always know from which workbook each worksheet comes. Just save that information in an array or hash

    CountZero

    A program should be light and agile, its subroutines connected like a string of pearls. The spirit and intent of the program should be retained throughout. There should be neither too little or too much, neither needless loops nor useless variables, neither lack of structure nor overwhelming rigidity." - The Tao of Programming, 4.1 - Geoffrey James

    My blog: Imperial Deltronics