Ir para conteúdo
  • 0

Tipo de Dados na Coluna


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

Pergunta

  • Membros

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
  • Membros
  • Solução
Postado (editado)

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
  • Membros

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
  • Membros
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
  • Membros

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

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

  • 0
  • Membros
Postado (editado)

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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...