Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
Not applicable

IMPORTAR ABAS DO EXCEL PARA QLIKVIEW

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

Tags (1)
1 Solution

Accepted Solutions
Not applicable

Re: IMPORTAR ABAS DO EXCEL PARA QLIKVIEW

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;

11 Replies
Not applicable

Re: IMPORTAR ABAS DO EXCEL PARA QLIKVIEW

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;

ericcosmai
New Contributor III

Re: IMPORTAR ABAS DO EXCEL PARA QLIKVIEW

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.

mercadante
Contributor

Re: IMPORTAR ABAS DO EXCEL PARA QLIKVIEW

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

Re: IMPORTAR ABAS DO EXCEL PARA QLIKVIEW

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.

mercadante
Contributor

Re: IMPORTAR ABAS DO EXCEL PARA QLIKVIEW

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;

Re: IMPORTAR ABAS DO EXCEL PARA QLIKVIEW

Esse  comando o QlikView não reconhece mesmo, mas esta correto.

Vou montar um exemplo e anexo no próximo post

mercadante
Contributor

Re: IMPORTAR ABAS DO EXCEL PARA QLIKVIEW

Na verdade ele esta dando erro na linha   [$(sheetName)]:


diz que não foi possível abrir o arquivo

Re: IMPORTAR ABAS DO EXCEL PARA QLIKVIEW

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));

mercadante
Contributor

Re: Re: IMPORTAR ABAS DO EXCEL PARA QLIKVIEW

Alterei, mas apresentou o mesmo erro.

Segue planilha