Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bom dia!
Prezados Senhores
Tenho um arquivo no excel onde esse arquivo poui 120 abas cada uma com mais de cinco mil linhas.
Como faço faço para importar todas essa 120 abas de uma só vez para o qlikview, sem que tenha que apontar uma a uma no script do qlikview?
Abs
William
Ola willian,
Você pode criar um driver ODBC para acessar a planilha e existem variaveis ODBC que você consegue manipular para verificar todas as abas automaticamente.
Abraços
Exemplo:
// Conexão ODBC
ODBC CONNECT TO [Excel;DBQ=$(input_pathname)];
// Leitura de variaveis do ODBC
TABLES:
sqltables;
// TABLE_NAME corresponde as informações das abas da sua planilha (pode verificar as informações do SQLTABLES)
// Tratamento para leitura de diversas abas de uma planilha
FOR i = 1 to fieldValueCount('TABLE_NAME')
LET sheetName=Replace(Replace(purgeChar(fieldValue('TABLE_NAME', i), chr(39)),'$_',''),'$','');
[$(sheetName)]:
REPLACE LOAD * FROM $(input_pathname) (biff, embedded labels, table is [$(sheetName)$]);
NEXT
Drop table TABLES;
Ola willian,
Você pode criar um driver ODBC para acessar a planilha e existem variaveis ODBC que você consegue manipular para verificar todas as abas automaticamente.
Abraços
Exemplo:
// Conexão ODBC
ODBC CONNECT TO [Excel;DBQ=$(input_pathname)];
// Leitura de variaveis do ODBC
TABLES:
sqltables;
// TABLE_NAME corresponde as informações das abas da sua planilha (pode verificar as informações do SQLTABLES)
// Tratamento para leitura de diversas abas de uma planilha
FOR i = 1 to fieldValueCount('TABLE_NAME')
LET sheetName=Replace(Replace(purgeChar(fieldValue('TABLE_NAME', i), chr(39)),'$_',''),'$','');
[$(sheetName)]:
REPLACE LOAD * FROM $(input_pathname) (biff, embedded labels, table is [$(sheetName)$]);
NEXT
Drop table TABLES;
Olá William.
É possível fazer a carga dessas abas fazendo um for, entretanto, para isso há duas condições:
1º) O arquivo deve ter em cada aba o mesmo cabeçalho
2º) Cada aba deve ter o nome que siga uma sequência. Exemplo: Plan1,Plan2,Plan3.....
Segue anexo de exemplo.
Espero ter ajudado.
Abraço.
Bom dia Eduardo,
Tudo bem?
Será que você pode me ajudar com esse código?
A planilha que vou ler é incrementada uma nova aba toda semana. O Exemplo que o Éric postou funciona, mas preciso a cada semana incrementar +1 no For.
Pelo que entendi no seu exemplo, isso vai se tornar dinâmico correto?
O que não entendi muito bem é a conexão odbc
Antonio, a conexão ODBC é realizada para descobrir a quantidade de abas que o excel possui. Ele faz isso através do comando sqltables, que retorna todas as tabelas da planilha e no for ele conta o número de registros ou seja o número de tabelas.
Yuri,
Criei a conexão ODBC, e quando testo ele diz que a conexão foi bem sucedida.
Porem, quando executo o código ele diz que não foi possível abrir o arquivo.
Reparei que a quarta e quinta linha " TABLES: sqltables;" ele grifa como se existisse um erro de sintaxe.
Você sabe dizer se falta declarar alguma coisa na linha do TABLES e SQLTABLES?
abaixo segue código que estou utilizando.
// Conexão ODBC
ODBC CONNECT TO [Excel Files;DBQ=C:\Users\casanj\Documents\Lixo\Abas.xlsx];
// Leitura de variaveis do ODBC
TABLES:
sqltables;
// TABLE_NAME corresponde as informações das abas da sua planilha (pode verificar as informações do SQLTABLES)
// Tratamento para leitura de diversas abas de uma planilha
FOR i = 1 to fieldValueCount('TABLE_NAME')
LET sheetName=Replace(Replace(purgeChar(fieldValue('TABLE_NAME', i), chr(39)),'$_',''),'$','');
[$(sheetName)]:
REPLACE LOAD * FROM $(input_pathname) (biff, embedded labels, table is [$(sheetName)$]);
NEXT
Drop table TABLES;
Esse comando o QlikView não reconhece mesmo, mas esta correto.
Vou montar um exemplo e anexo no próximo post
Na verdade ele esta dando erro na linha [$(sheetName)]:
diz que não foi possível abrir o arquivo
Antonio, você precisa ver o resultada da variável sheetName. Você pode mandar a sua planilha?
Uma tentativa, altere a linha
LET sheetName=Replace(Replace(purgeChar(fieldValue('TABLE_NAME', i), chr(39)),'$_',''),'$','');
para
LET sheetName = purgeChar(peek('TABLE_NAME', i, 'TABLES'), chr(39));
Alterei, mas apresentou o mesmo erro.
Segue planilha