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):
|
2022-02-17 12:52:34 +00:00
|
|
|
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)
|