Ir para conteúdo
  • 0

Tipo de Dados na Coluna


gabriel_cap
Ir para solução Solucionado por Maycon Silva ,

Pergunta

  • Alunos

Tenho uma coluna em meu arquivo .XLS onde os dados são códigos de barras de produtos e não consigo resolver para ficarem no formato correto que são sempre 13 dígitos. Já cheguei perto mas, quando fica quase correto ele substitui o último numero por 2 zeros. No excel eu apenas transformo em número e removo as casas decimais e sempre funciona. 

 

Alguem consegue ajudar? Obrigado.

 

image.png.b6a4a9295aa5d1837373ba3b3a51ece1.png

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
  • Solução

Boa tarde.

Gabriel, conforme falamos no whats,  vou deixar registrado aqui a solução, tanto para xls como para txt.

Lembrando que para xls, você deverá personalizar o formato da coluna de barras:

Apertando CTRL + 1 e após na opção personalizado digitar o código ####################;

Para arquivo CSV basta salvar em uma pasta e fazer letiura e copiar o código abaixo no editor avançado:

 

let
    Fonte = Csv.Document(File.Contents("C:\Users\engma\Downloads\produtos-txt.txt"),[Delimiter=",", Columns=26, Encoding=1200, QuoteStyle=QuoteStyle.None]),
    #"Tipo Alterado" = Table.TransformColumnTypes(Fonte,{{"Column1", type text}, {"Column2", type text}, {"Column3", type text}, {"Column4", type text}, {"Column5", type text}, {"Column6", type text}, {"Column7", type text}, {"Column8", type text}, {"Column9", type text}, {"Column10", type text}, {"Column11", type text}, {"Column12", type text}, {"Column13", type text}, {"Column14", type text}, {"Column15", type text}, {"Column16", type text}, {"Column17", type text}, {"Column18", type text}, {"Column19", type text}, {"Column20", type text}, {"Column21", type text}, {"Column22", type text}, {"Column23", type text}, {"Column24", type text}, {"Column25", type text}, {"Column26", type text}}),
    #"Primeiros caracteres extraídos" = Table.TransformColumns(#"Tipo Alterado", {{"Column1", each Text.Start(_, 7), type text}}),
    #"Texto Extraído Entre os Delimitadores" = Table.TransformColumns(#"Primeiros caracteres extraídos", {{"Column8", each Text.BetweenDelimiters(_, "0  ", "                                    CX", 1, 0), type text}}),
    #"Outras Colunas Removidas" = Table.SelectColumns(#"Texto Extraído Entre os Delimitadores",{"Column1", "Column8"}),
    #"Colunas Renomeadas" = Table.RenameColumns(#"Outras Colunas Removidas",{{"Column1", "Produto"}, {"Column8", "CodBarras"}}),
    #"Linhas Filtradas" = Table.SelectRows(#"Colunas Renomeadas", each ([CodBarras] <> null and [CodBarras] <> "" and [CodBarras] <> "                                  CX           33"))
in
    #"Linhas Filtradas"

Editado por Maycon Silva
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Boa tarde, provavelmente alguma etapa anterior está transformando o texto em número.

Logo após a etapa de carga da sua base, veja se no final do código de importação, para essa coluna, não tem um int.64 type, algo assim.

Se quiser enviar um arquivo de exemplo já vejo mais rápido pra vc.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
16 minutos atrás, Tiago Craici disse:

Boa tarde @gabriel_cap

Provavelmente é alguma etapa anterior conforme o @Maycon Silva falou... 
Uma possibilidade é trazer é formatado na sua query no banco (select) formate a consulta como:
cast (coluna_do_banco as text)


Att

 

Mas no caso dele é um xls

Daí pode também usar uma aspas simples antes do primeiro dígito da barra no excel, que irá transformar os dados em texto tbm.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Olá @gabriel_cap, para isso acredito que se formatar como texto primero a coluna e depois criar uma coluna personalizada com a combinação de algumas funções dê certo.

No exemplo abaixo eu tentei simular sua situação atual e acredito que dê certo aplicar ai:

 

let
    Fonte = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMtexsDQAAiNLQ0PTVG1DI6VYHVRRM7iosYWBhbkJjG1oamKKqdoErtrIzNzC0sRQKTYWAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Número = _t]),
    #"Tipo Alterado" = Table.TransformColumnTypes(Fonte,{{"Número", type number}}),
    #"Texto Inserido Antes do Delimitador" = Table.AddColumn(#"Tipo Alterado", "Texto Inicial", each Text.BeforeDelimiter(Text.From([Número], "pt-BR"), "0", 4), type text),
    #"Coluna Personalizada Adicionada1" = Table.AddColumn(#"Texto Inserido Antes do Delimitador", "Texto Final", each Text.PadStart([Texto Inicial], 13, "0"), type text),
    #"Colunas Removidas" = Table.RemoveColumns(#"Coluna Personalizada Adicionada1",{"Texto Inicial", "Número"})
in
    #"Colunas Removidas"

Em anexo o PBIX com um exemplo, veja se atende.

Espero ter ajudado.

 

Exemplo tratamento.pbix

  • Like 2
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Olá @gabriel_cap, caso deseje usar a coluna Cód. prod. ai é só criar uma coluna personalizada com o seguinte código:

Text.PadStart([Cód. prod.], 13, "0").

Assim todos os dígitos antes dos números ele vai inserir o zero e manter o padrão de 13 dígitos como deseja.

Editado por Renato Carlos Rossato
Link para o comentário
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...