Extraindo dados de uma planilha Excel - CSV
F#
Olá pessoa!
Alguém aqui já precisou importar dados de uma planilha Excel? - Sentiu aquela raiva do cliente?
Por mais que você não goste, paciência. O mundo gosta do Excel e ele é bem maneiro. Aceite.
É totalmente factível fazer esta implementação em C#, inclusive tenho um amigo que já fez isso, tantas, mas tantas vezes, que ele poderia dar uma aula aqui.
Mas mesmo com toda a prática do mundo, eu ainda acho que C# não é a melhor linguagem para fazer isso, vamos mais uma vez apelar para a facilidade dos type providers do F#!.
Três linhas de código, planilha do Excel em suas mãos.
Este post faz parte de uma série sobre Type Providers! Para visualizar a série inteira clique aqui
Vamos começar criando uma aplicação console em F#!
Depois disso vamos instalar o pacote FSharp.Data
, através do nuget:
PM> Install-Package FSharp.Data
Este pacote disponibiliza alguns type providers bastante úteis, incluindo o type provider para CSV.
Assim como nos outros casos (JSON e HTML) já vistos aqui no blog, esta implementação é completamente trivial e é uma forma bastante segura de utilizar F# em sua aplicação .NET.
Você pode utilizar qualquer arquivo CSV, fique à vontade para criar um, mas deixarei um arquivo embarcado no projeto.
Para incorporar o arquivo, insira o seu caminho, conforme código.
[<Literal>]
let caminho = "C:\\Users\\re035148\\Documents\\Custos.csv"
Agora vamos definir o tipo que irá receber as informações do CSV através do Type Provider!
Diferente dos anteriores, neste caso iremos informar mais de um parâmetro ao provider, primeiro vamos passar o caminho do arquivo e depois o separador de colunas, neste caso ‘;’.
type PlanilhaCustos = CsvProvider<caminho,";">
Com a definição do tipo PlanilhaCustos
já podemos acessar as informações com os tipos corretos, assim como fizemos nos outros providers!
Vamos utilizar a função Load
presente no tipo da planilha, informando por parâmetro o caminho do arquivo:
let dados = PlanilhaCustos.Load caminho
E é isso aí, está pronto! Simples assim.
Podemos exibir no console os dados da planilha:
for linha in dados.Rows do
printfn "|%s | %s | %i" linha.Descricao linha.Tipo linha.Jan
Nesse caso usamos apenas três das colunas definidas na planilha, mas poderíamos ter utilizado todas.
Veja o resultado:
Você pode encontrar o código desenvolvido aqui no meu Github.
Atenção
Se quiser se aprofundar mais sobre os type providers você pode encontrar a documentação completa da Microsoft aqui.
Agora você só passa trabalho importando uma planilha do Excel, se quiser!
O que você achou deste post?
Me conte nos comentários!
E Até mais!
Sempre vale lembrar que as informações e textos aqui no blog representam minha opinião pessoal, o que pode não ser igual à sua ou de qualquer outra pessoa, incluindo a empresa para qual eu trabalho. Portanto as publicações inseridas aqui estão relacionadas somente a mim.