I suppose that pyworkbooks should still work with gnumeric-1.12. If not
they need to adapt their code or fill bug reports. I'm not a Python
expert, just tried to make things work, and I'm over busy.

Regards,
Jean

Le jeudi 27 septembre 2012 à 01:09 -0300, Fernando Badilla a écrit :
> GNOME.org 
> GNOME: Mail Services
>       * Home
>       * Mailing Lists
>       * List Archives
> 
>   
> Gnumeric and Python (or other scripting languages).
> 
> ______________________________________________________________________
>       * From: Jean Brefort <jean brefort normalesup org>
>       * To: Gnumeric List <gnumeric-list gnome org>
>       * Subject: Gnumeric and Python (or other scripting languages).
>       * Date: Thu, 16 Aug 2012 18:50:17 +0200
> 
> ______________________________________________________________________
> Hi,
> 
> Next Gnumeric will support introspection, and this changes the way
> Python and gnumeric can interact. Although the Gnumeric Python interface
> is still there, it is better to use introspection. In the Python
> console, if you type (with a fresh new workbook):
> 
> >>> from gi.repository import Gnm
> >>> wb=Gnm.App.workbook_get_by_index(0)
> >>> sheet=wb.sheet_by_index(0)
> >>> cell=sheet.cell_create(0,0)
> >>> cell.set_text("Hello World!")
> 
> A1 is now populated, but the view is not updated. Selecting the Gnumeric
> window will show it. It is also possible to do that using Python, but it
> is much more difficult.
> 
> You can also do things from a script or using Python in the terminal:
> 
> >>> from gi.repository import GOffice
> >>> from gi.repository import Gnm
> >>> Gnm.init()
> >>> wb=Gnm.Workbook.new_with_sheets(1)
> >>> sheet=wb.sheet_by_index(0)
> >>> cell=sheet.cell_create(0,0)
> >>> cell.set_text("Hello World!")
> >>> uri=GOffice.shell_arg_to_uri("hello-world.gnumeric")
> >>> wbv=Gnm.WorkbookView.new(wb)
> >>> fs=GOffice.FileSaver.for_file_name(uri)
> >>> cc=Gnm.CmdContextStderr.new()
> >>> Gnm.wb_view_save_as(wbv,fs,uri,cc)
> True
> >>> quit()
> 
> As can be seen there are some (actually many) issues with namespaces in
> gnumeric code. If everything was correct, Gnm.wb_view_save_as(wbv,...)
> would be wbv.save_as(...).
> 
> Things should work with other languages fof which introspection bndings
> exist (see https://live.gnome.org/GObjectIntrospection/Users).
> 
> As I'm all but n Python (or any other scripting language) expert, I
> didn't test, and there might be bugs around.
> 
> Regards,
> Jean
> 
> 
> ______________________________________________________________________
> 
> ______________________________________________________________________
> 
> Hi Jean,
> 
> I'm not a programmer just and engineer,
> so I couldn't do it myself even if I wanted to, but this looks so much
> like your examples...
> please check http://sourceforge.net/projects/pyworkbooks/ to add some
> awesome friendly functionality with great performance and "msoffice"
> compatibility to the "python API", for example:
> 
> (the following text is not formatted so please check the pdf)
> 
> Summary/ Cheat-sheet:
> Data Reading:
> data = B[5,5] # return data point
> data = B[0, 0:20] # returns array of your data type
> data = B[“A1:AA100”] # returns generator for a matrix of data
> data = B[0:20:2, 0:40:6] # stepping/splicing. Don't use in Excel
> data = B[:20, (0,5,8)] # select specific points to retrieve (advanced
> stepping)
> data = B[0, 0:] # INVALID INPUT. Length needs to be specified
> Data Writing:
> B[0,0] = 4
> # single point
> B[0, :20] = 44 # copying 44 over a row. Splice specifies length
> B[:20, 0] = 44 # copying 44 over a column. Splice specifies length
> B[0, 0:] = 44 # INVALID INPUT. Length needs to be specified
> B[1, 0:] = range(100)
> # writes out an array. Note that the splice only specifies the
> # direction (does not specify the length), and can be left empty
> B[0,0] = [[n*p for n in range(100)] for p in range(100)]
> # writing a matrix
> * Same addressing features as Data Reading.
> Referencing:
> B.change_cellref(0,5)
> # makes it so that calling B[0,0] will return the value at 0,5
> # recommended that you do not use if you use string addressing
> B.change_sheet('Sheet1') # sheet addressing with string
> B.change_sheet(1) # sheet addressing with index
> B.current_sheet_name # stores current sheet name. Do not change
> B.change_workbook('Book1.xlsx') # workbook addressing, string or int
> (use string)
> B.current_workbook_name # current workbook name. Do not change
> B.working_directory
> # variable stores current workbook's working directory. Only for
> # Gnumeric right now
> Sheet Addressing in Call:
> data = B[“A1:B3”, 'Sheet3'] # gets the data from Sheet3 without
> needing to change sheet
> Creating/Renaming Sheets:
> B.create_sheet('sheetname')
> B.rename_sheet('oldsheetname', 'newsheetname')
> Data Types:
> B.change_dtype(list)
> # change dtype to list
> B.change_dtype(tuple)
> B.change_dtype(int) # change dtype to array of numpy integers
> B.change_dtype(float) # change dtype to array of numpy floating point
> values
> Sheet Write Protection:
> B.protect_sheet('Sheet1')
> # protects a sheet. Not tested across workbooks. May be buggy
> B.unprotect_sheet('Sheet1')
> More Advanced (and probably useless) features:
> B.ALWAYS_GENERATE = True
> # arrays will be returned as generator-like objects
> # (matricies will still be generators of arrays)
> 
> Thank you very much!
> fdo
> 
> 


_______________________________________________
gnumeric-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/gnumeric-list

Reply via email to