Microsoft 365 - Excel¶
Processe e execute operações em seus arquivos online do Excel por meio de uma conta do Microsoft 365. Escreva, leia e atualize suas planilhas facilmente através do plugin BotCity para o Excel.
Aviso
Para poder usar este plugin, você precisa ter uma conta do Microsoft 365 com um projeto criado e configurado corretamente.
Depois de criar um projeto, você precisa concluir o processo de autenticação por meio do plugin Microsoft 365 Credentials.
Para mais detalhes, consulte as seções anteriores:
Instalação¶
Importando o Plugin¶
Depois de instalar este pacote, a próxima etapa é importar o pacote no seu código e começar a usar as funções.
Configurando a conta de serviço¶
Conforme mencionado acima, para usar o plugin do Excel, é necessário realizar o processo de autenticação da conta por meio do plugin Microsoft 365 Credentials.
Com a instância do plugin de credenciais obtida, vamos usá-la para instanciar o plugin do Excel.
from botcity.plugins.ms365.credentials import MS365CredentialsPlugin, Scopes
from botcity.plugins.ms365.excel import MS365ExcelPlugin
# Instanciando o plugin de Credenciais
service = MS365CredentialsPlugin(
client_id='<APPLICATION ID>',
client_secret='<SECRET VALUE>',
)
service.authenticate(scopes=[Scopes.BASIC, Scopes.FILES_READ_WRITE_ALL])
# Instanciando o plugin do Excel
excel = MS365ExcelPlugin(service_account=service)
Dica
Para utilizar o serviço do Excel, basta adicionar o escopo Scopes.FILES_READ_WRITE_ALL
referente à permissão Files.ReadWrite.All
do projeto.
Veja mais detalhes sobre escopos e permissões nesse link.
Obtendo o arquivo Excel¶
O primeiro passo que temos que fazer para conseguir utilizar os serviços do Excel é configurar o arquivo que será utilizado.
Este arquivo do Excel deve estar armazenado em um OneDrive que você tenha acesso com a sua conta. Com isso em mente, podemos obter a referência do arquivo de duas maneiras.
Utilizando o caminho do arquivo no OneDrive¶
A forma mais simples de buscar pelo arquivo Excel que será utilizado é passando o caminho absoluto do arquivo no OneDrive.
Nesse caso, será utilizado como referência o OneDrive padrão da conta que está sendo usada.
Dica
O caminho do arquivo deve seguir o padrão: '/caminho/do/arquivo'.
A primeira /
significa que estamos iniciando na pasta raiz e o restante do caminho será o "caminho absoluto" do item no drive.
Utilizando o plugin do OneDrive para obter o arquivo¶
Se você já está utilizando o plugin do OneDrive no seu código, ou por algum outro motivo prefira fazer dessa maneira, você também tem a opção de obter o arquivo utilizando o plugin do OneDrive.
Utilizando um dos métodos que retorne um objeto File
, você pode usar esse objeto retornado como parâmetro do método get_excel_file
.
from botcity.plugins.ms365.credentials import MS365CredentialsPlugin, Scopes
from botcity.plugins.ms365.onedrive import MS365OneDrivePlugin
from botcity.plugins.ms365.excel import MS365ExcelPlugin
# Instanciando o plugin de Credenciais
service = MS365CredentialsPlugin(
client_id='<APPLICATION ID>',
client_secret='<SECRET VALUE>',
)
service.authenticate(scopes=[Scopes.BASIC, Scopes.FILES_READ_WRITE_ALL])
# Instanciando o plugin do OneDrive
onedrive = MS365OneDrivePlugin(service_account=service)
# Instanciando o plugin do Excel
excel = MS365ExcelPlugin(service_account=service)
# Obtendo o arquivo Excel utilizando o plugin do OneDrive
file = onedrive.get_file_by_name("My-File.xlsx")
# Setando o arquivo que será utilizado através do objeto 'File'
excel.get_excel_file(file_or_path=file)
Dica
Veja mais detalhes sobre as formas de buscar arquivos no drive acessando a documentação do plugin do OneDrive.
Gerenciando planilhas¶
Com o arquivo Excel devidamente configurado, podemos começar a realizar as operações nas planilhas.
Ao usar o método get_excel_file
podemos passar o nome da planilha que será usada como referência nas operações.
Se nenhuma planilha específica for passada, será utilizada por padrão a primeira planilha do arquivo.
Buscando planilhas existentes¶
Além de definir qual planilha será utilizada ao buscar o arquivo Excel, também temos a possibilidade de listar todas as planilhas existentes ou buscar por uma planilha em específico.
Também podemos definir uma nova planilha ativa, usando o objeto Worksheet
retornado ou através do nome da planilha.
# Retornando a lista de planilhas do arquivo
sheets = excel.list_sheets()
# Retornando uma Worksheet específica
results_sheet = excel.get_worksheet(sheet_name="Results")
# Definindo a planilha ativa através da propriedade 'active_sheet'
excel.active_sheet = results_sheet
# Outra forma para configurar a planilha ativa
excel.set_active_sheet("New Sheet")
Criando e removendo planilhas¶
Você também pode criar novas planilhas no arquivo e excluir planilhas existentes.
Dica
Para conseguir utilizar uma planilha que foi criada, você deve utilizar o método set_active_sheet
logo após a criação.
Lendo dados da planilha¶
Conseguimos facilmente retornar o conteúdo de uma planilha de diferentes formas.
Podemos buscar por uma célula, linha ou coluna em específico. Além disso, podemos retornar todo o conteúdo existente ou até o contéudo somente de uma determinada área.
Tipos de formatos dos dados
A API do Microsoft Graph utiliza alguns padrões para determinados tipos de dados.
Se você utiliza nas suas planilhas células com o formato Date, tenha em mente que a API retorna esses valores sempre no padrão mm/dd/yyyy.
Então mesmo utilizando as datas no formato dd/mm/yyyy, certifique-se de fazer os tratamentos necessários ao ler os dados utilizando o plugin.
Recomendamos que, se possível, tente utilizar datas na planilha com o formato Texto, para que a API retorne o conteúdo sem aplicar padrões específicos.
Ao buscar por todo o conteúdo da planilha, será retornado uma lista de listas, onde cada lista corresponderá a uma linha da planilha.
# Retornando todo o conteúdo existente na planilha no formato: List[List[object]]
values = excel.as_list()
# Cada lista corresponde a uma linha da planilha
for row in values:
print(row)
# Retornando o conteúdo de um determinado range da planilha
range_values = excel.get_range(range_="A1:E5")
# Cada lista corresponde a uma linha da planilha
for row in range_values:
print(row)
Escrevendo novos dados¶
Para escrevermos novos dados na planilha podemos utilizar a mesma estratégia que utilizamos para a leitura.
É possível inserir dados em uma única célula ou utilizar uma determinada área da planilha.
Tipos de formatos dos dados
A API do Microsoft Graph utiliza alguns padrões para determinados tipos de dados.
Caso utilize números com casas decimais, recomendamos utilizar .
ao invés de ,
ao inserir os dados na planilha.
Dessa forma, evitamos que a API aplique alguma formatação indesejada para os valores que estão sendo utilizados.
# Inserindo dado em uma célula específica
excel.set_cell(column='L', row=7, value="Finished")
# Inserindo dados em um range específico
# Cada lista representa uma linha que será inserida
values = [
['Product', 'Stock', 'Price'],
['Notebook', '500', '1250.95'],
['Smartphone', '250', '700.99'],
['Mouse', '90', '65.25']
]
# O range utilizado deve ser compatível com o tamanho da lista dos dados
excel.set_range(range_="A1:C4", values=values)
Além disso, também podemos inserir novas linhas ou colunas. Por padrão, esses novos valores serão inseridos ao final da planilha, porém você também pode utilizar um range específico.
Excluindo dados¶
Além de ler e escrever dados na planilha, também conseguimos remover dados existentes.
É possível limpar todo o conteúdo da planilha, remover os valores de uma área ou até de uma linha ou coluna em específico.
Aviso ao remover linhas ou colunas
Ao usar os métodos para remover colunas, lembre-se de que cada coluna removida fará com que as colunas à sua direita sejam movidas para a esquerda.
Ao usar os métodos para remover linhas, lembre-se de que cada linha removida fará com que as linhas abaixo dela sejam movidas para cima.
# Limpando todo o conteúdo da planilha
excel.clear()
# Limpando os valores de um range específico
excel.clear(range_="B2:D10")
# Removendo os valores de uma única coluna
excel.remove_column(column="C")
# Removendo os valores de colunas específicas
excel.remove_columns(columns=["F", "H", "J"])
# Removendo os valores de uma única linha
excel.remove_row(row=15)
# Removendo os valores de linhas específicas
excel.remove_rows(rows=[2, 4, 6])
Dica
Para todas as operações acima, você tem a possibilidade de passar a planilha que será utilizada através do parâmetro worksheet
.
Nesse caso, ao passar uma planilha como parâmetro ela será usada como referência no contexto do método, ao invés da planilha ativa atual.