Fiz alguns ajustes e agora é possível gerenciar o nome da global, nome do usuário no primeiro nó da global, e também inseri uma validação de conteúdo.
Corrigi a limpeza da global, sintaxe anterior não estava correta.
segue fonte:
/// Parâmetro: caminhoArquivo (Ex: "C:\Temp\dados.xlsx")
/// Exemplo de uso: Do ##class(Ophelos.Tools).LerExcel("C:\Temp\minha_planilha.xlsx",$username,nome da Global, conteudo para validação do arquivo - primeira célula da primeira linha )
ClassMethod ImportaExcel(caminhoArquivo As %String, nomeUsuario As %String, nomeGlobal As %String, conteudoArquivo As %String) [ Language = python ]
{
import os
try:
from openpyxl import load_workbook
import iris
# cria variável de transição IRIS x Python
g_ref = iris.gref(nomeGlobal) if not os.path.exists(caminhoArquivo):
g_ref[nomeUsuario] = 'Arquivo Não Encontrado'
return
wb = load_workbook(caminhoArquivo, data_only=True)
ws = wb.active
#limpa a global
g_ref.kill([nomeUsuario])
count = 0
for row in ws.iter_rows(min_row=1, values_only=True):
count += 1 if count == 1:
primeira_celula = str(row[0]).strip() if row[0] is not None else ""
if primeira_celula != conteudoArquivo:
g_ref[nomeUsuario] = 'Arquivo Não é ' + conteudoArquivo
return lista_dados = []
for celula in row:
if celula is None:
lista_dados.append("")
else:
lista_dados.append(str(celula))
dados_para_gravar = "|".join(lista_dados)
g_ref[nomeUsuario,count] = dados_para_gravar
g_ref[nomeUsuario] = count
except Exception as e:
g_ref[nomeUsuario]= 'Erro Execução'
}
Interessante, não sabia disso. Obrigado por compartilhar.






Considero o comando mais enigmático e fantástico do legado MUMPS. Utilizo ele desde os anos incríveis da Cobra Computadores.
O grande problema, era e ainda é, explicar essa linha de código para o pessoal de outras tecnologias:
Haja documentaçao!
Abraços,