Ajuda do LibreOffice 25.2
O serviço Datasheet permite visualizar o conteúdo das tabelas do banco de dados, bem como os resultados das consultas e instruções SQL usando o Data View do Base. Adicionalmente, este serviço permite:
Adicionar menus personalizados à exibição de dados.
Acessar valores em posições específicas da exibição de dados.
Posicionar o cursor em uma célula específica da exibição de dados.
Antes de usar o serviço Datasheet, a biblioteca ScriptForge precisa ser carregada ou importada:
O serviço Datasheet pode ser invocado de duas maneiras diferentes dependendo se o arquivo de banco de dados estiver aberto.
O exemplo abaixo considera que o arquivo do banco de dados está aberto, assim o serviço UI pode ser usado para recuperar o documento e o método OpenTable do serviço Database é usado para obter a instância do serviço Datasheet.
    Dim ui As Object, oBase As Object, oSheet As Object
    Set ui = CreateScriptService("UI")
    ' O objeto oBase é uma instância do serviço Base
    Set oBase = ui.GetDocument("C:\Documents\myDB.odb")
    ' O objeto oSheet é uma instância do serviço Datasheet
    Set oSheet = oBase.OpenTable("Customers")
  No exemplo acima é também possível usar o método OpenQuery do serviço Base para obter uma instância do serviço Datasheet.
Para invocar o serviço Datasheet quando o arquivo do banco de dados não estiver aberto, use os métodos OpenTable, OpenQuery ou OpenSql do serviço Database. O exemplo abaixo usa o método OpenTable para abrir uma tabela que existe no arquivo de banco de dados:
    Dim oDatabase As Object, oSheet As Object
    ' O objeto oDatabase é uma instância do serviço Database
    Set oDatabase = CreateScriptService("Database", "C:\Documents\myDB.odb")
    ' O objeto oSheet é uma instância do serviço Datasheet
    Set oSheet = oDatabase.OpenTable("Customers")
  Os exemplos acima podem ser traduzidos para Python da seguinte maneira:
    from scriptforge import CreateScriptService
    ui = CreateScriptService("UI")
    base_doc = ui.GetDocument(r"C:\Documents\MyFile.odb")
    sheet = base_doc.OpenTable("Customers")
  
    database = CreateScriptService("Database", r"C:\Documents\myDB.odb")
    sheet = database.OpenTable("Customers")
  As seguintes propriedades estão disponíveis no serviço Datasheet:
| Nome | Somente leitura | Tipo | Descrição | 
|---|---|---|---|
| ColumnHeaders | Sim | Array de Strings | Retorna um Array com os nomes dos cabeçalhos das colunas em uma folha de dados. | 
| CurrentColumn | Sim | String | Retorna o nome da coluna atualmente selecionada. | 
| CurrentRow | Sim | Integer | Retorna o número da linha atualmente selecionada, começando em 1. | 
| DatabaseFileName | Sim | String | Retorna o nome do arquivo Base no formato FSO.FileNaming. | 
| Filter | Não | String | Especifica um filtro a ser aplicado à folha de dados expresso como uma cláusula WHERE de uma consulta SQL sem a palavra-chave WHERE. Se uma String vazia for fornecida então o filtro Filter ativo é removido. | 
| LastRow | Sim | Integer | Retorna o número de linhas na folha de dados. | 
| OrderBy | Não | String | Especifica a ordem em que os registros são mostrados expresso como uma cláusula ORDER BY de uma consulta SQL sem a palavra-chave ORDER BY. Se uma string vazia for especificada o valor OrderBy ativo é removido. | 
| ParentDatabase | Sim | Objeto | Retorna a instância do serviço Database à qual a folha de dados pertence. | 
| Source | Sim | String | Retorna uma String representando a fonte de dados, a qual pode ser um comando SQL, um nome de tabela ou um nome de consulta. | 
| SourceType | Sim | String | Retorna o tipo da fonte de dados, o qual pode ser um dos seguintes valores: "SQL", "TABLE" ou "QUERY". | 
| XComponent | Sim | Objeto UNO | Retorna o objeto UNO com.sun.star.lang.XComponent que representa a folha de dados. | 
| XControlModel | Sim | Objeto UNO | Retorna o objeto UNO com.sun.star.awt.XControl que representa a folha de dados. | 
| XTabControllerModel | Sim | Objeto UNO | Retorna o objeto UNO com.sun.star.awt.XTabControllerModel que representa a folha de dados. | 
| Lista de Métodos no Serviço Datasheet | ||
|---|---|---|
Traz para frente a janela de vista de dados correspondente à instância Datasheet.
svc.Activate()
      oSheet.Activate()
    
      sheet.Activate()
    Fecha a janela de vista de dados correspondente à instância Datasheet.
svc.CloseDatasheet()
      oSheet.CloseDatasheet()
    
      sheet.CloseDatasheet()
    Cria uma nova entrada de menu na janela de vista de dados e retorna uma instância do serviço SFWidgets.Menu, com a qual itens de menu podem ser adicionados programaticamente.
Menus adicionados usando o método CreateMenu são perdidos assim que a janela de vista de dados é fechada.
svc.CreateMenu(menuheader: str, opt before: any, opt submenuchar: str): obj
menuheader: Nome do novo menu.
before: Este argumento pode ser o nome de uma entrada existente no menu antes da qual o novo menu será posicionado ou um número expressando a posição do novo menu. Se este argumento estiver em branco o novo menu será colocado na última posição.
submenuchar: Delimitador usado em árvores de menu (Padrão=">")
      Dim oMenu As Object
      Set oMenu = oSheet.CreateMenu("Meu Menu", Before := "Dados")
      With oMenu
          .AddItem("Item 1", Command := ".uno:About")
          ' ...
          .Dispose()
      End With
    
      menu = sheet.CreateMenu("Meu Menu", before="Dados")
      menu.AddItem("Item 1", command=".uno:About")
      # ...
      menu.Dispose()
    Leia a página de ajuda do serviço Menu para aprender mais sobre como criar menus, submenus e associar comandos a eles.
Retorna o texto em uma dada coluna da linha atual.
Este método não muda a posição do cursor na janela de vista de dados.
svc.GetText(column: any): str
column: O nome da coluna como uma String or a posição da coluna (começando em 1). Se uma posição maior que o número de colunas for dada, a última coluna é retornada.
      oSheet.GetText("FirstName")
    
      sheet.GetText("FirstName")
    Retorna o valor em uma dada coluna da linha atual como um tipo de dados Basic válido.
Os tipos que podem ser retornados são: String, Integer, Long, Single, Double, Date e Null.
Tipos binários são retornados como um valor Long indicando o comprimento do campo binário.
Um valor Empty é retornado se o valor requerido não pode ser recuperado.
Este método não muda a posição do cursor na janela de vista de dados.
svc.GetValue(column: any): any
column: O nome da coluna como uma String or a posição da coluna (começando em 1). Se uma posição maior que o número de colunas for dada, a última coluna é retornada.
      oSheet.GetValue("Address")
    
      sheet.GetValue("Address")
    Move o cursor para a linha e coluna especificadas.
svc.GoToCell(opt row: int, opt column: any): bool
row: Número da linha como um valor numérico começando em 1. Se a linha requerida exceder o número existente de linhas, o cursor é movido para a última linha. Se este argumento não for especificado, então a linha não é modificada.
column: O nome da coluna como uma String ou a posição da coluna (começando em 1). Se a coluna requerida exceder o número existente de colunas, o cursor é movido para a última coluna. Se este argumento não for especificado, então a coluna não é modificada.
      ' Move o cursor para a coluna "UltimoNome" na linha 4
      oSheet.GoToCell(4, "UltimoNome")
      ' Move o cursor para a terceira coluna da linha atual
      oSheet.GoToCell(Column := 3)
      ' Move o cursor uma linha para baixo deixando-o na mesma coluna
      oSheet.GoToCell(Row := oSheet.CurrentRow + 1)
      ' Move o cursor para a última coluna da última linha
      Dim LastColumn As Integer : LastColumn = UBound(oSheet.ColumnHeaders) + 1
      oSheet.GoToCell(oSheet.LastRow, LastColumn)
    
      sheet.GoToCell(4, "UltimoNome")
      sheet.GoToCell(column=3)
      sheet.GoToCell(row=sheet.CurrentRow + 1)
      sheet.GoToCell(sheet.LastRow, len(sheet.ColumnHeaders))
    Remove uma entrada do menu da janela de vista de dados com base em seu nome.
Este método é capaz de remover menus que pertencem à interface de usuário padrão e menus que foram adicionados programaticamente com o método CreateMenu. A remoção de menus padrão não é permanente e eles serão restaurados após a janela ter sido fechada e aberta novamente.
svc.RemoveMenu(menuheader: str): bool
menuheader: Nome do menu a ser removido, sensível à caixa. O nome não deve incluir o caractere til ("~").
      oSheet.RemoveMenu("Data")
    
      sheet.RemoveMenu("Data")