replaycli-py/api/excel/cli.py

110 lines
3.7 KiB
Python
Raw Normal View History

2022-01-10 15:44:42 +00:00
import json
import os
import requests
class Excel:
"""
## Excel Client
---
Esta classe utiliza o serviço excel_svc para realizar manipulações em arquivos .xls ou .xlsx.
"""
ep: str = ""
def __init__ (self):
self.ep = os.environ.get("REPLAY_ADDR")
2022-01-10 15:44:42 +00:00
def __request_json_post__ (self, path: str, object: dict):
"""
## HTTP JSON POST
---
Este método é responsável por realizar requisições HTTP do tipo POST para objetos JSON.
Ele retorna o corpo de resposta da requisição, ou uma mensagem de erro, que indica qual foi a irregularidade ocorrida ao chamar a API.
"""
url = self.ep + path
print("Calling: " + url)
apikey = os.environ.get('REPLAY_APIKEY')
headers = {"X-API-KEY": apikey}
res = requests.post(url, json = object, headers = headers, verify = False)
if res.status_code >= 400:
raise Exception(f"HTTP ERROR: {str(res.status_code)} - {res.text}")
if res.headers.get("Content-Type") != None and res.headers.get("Content-Type").find("json") != -1:
return json.loads(res.text)
else:
return res.text
2022-01-10 16:17:38 +00:00
def read (self, path: str, sheet: str):
"""
## Excel Read
Faz a leitura da planilha recebida e a retorna como uma matriz.
---
#### Parâmetros:
- path: Caminho absoluto até a planilha, incluindo o nome da mesma. (Ex.: C:/MySheets/sheet.xls)
- sheet: Nome da aba que se deseja ler da planilha passada.
---
#### Retorna:
-> Matriz (array de arrays) contendo a aba da planilha lida. Somente é feita a leitura até as linhas e colunas que possuam caracteres válidos inseridos.
"""
object = {
"File": path,
"Sheet": sheet
}
return self.__request_json_post__("/ipc/excel/read", object)
def write (self, path: str, sheet: str, cell: str, val: str, cell_type: str):
"""
## Excel Write
Faz a escrita de um valor numa planilha especificada
---
#### Parâmetros:
- path: Caminho absoluto até a planilha, incluindo o nome da mesma. (Ex.: C:/MySheets/sheet.xls)
- sheet: Nome da aba que se deseja ler da planilha passada.
- cell: Célula em que se quer escrever o valor. (Ex.: A1, B10, AZ21, etc...)
- val: Valor que se quer inserir.
- cell_type: Tipo de formatação para a célula. Pode ser:
- "s": Tipo string
- "i": Tipo integer. Se quiser escrever um número ponto flutuante, utilize string.
- "b": Tipo booleano.
---
#### Retorna:
-> "ok" em caso de sucesso.
"""
object = {
"File": path,
"Sheet": sheet,
"Cel": cell,
"Val": val,
"Celtype": cell_type
}
return self.__request_json_post__("/ipc/excel/write", object)
2022-01-11 11:09:37 +00:00
def new (self, path: str, sheet: str):
"""
## Excel New Sheet
Faz a criação de uma nova planilha no caminho especificado.
2022-01-10 16:17:38 +00:00
2022-01-11 11:09:37 +00:00
---
#### Parâmetros:
- path: Caminho absoluto no qual será criada a planilha, incluindo o nome da mesma. (Ex.: C:/MySheets/newSheets/sheet.xlsx)
- sheet: Nome que se deseja dar à segunda aba da planilha, sendo a primeira, por padrão: "Sheet1" ou "Planilha1".
---
#### Retorna:
-> "ok" em caso de sucesso.
"""
object = {
"File": path,
"Sheet": sheet
}
return self.__request_json_post__("/ipc/excel/new", object)