🔥 Articles, eBooks, Jobs, Columnist, Forum, Podcasts, Courses 🎓



Veja como converter Excel para Json usando C#

Olá pessoal, meu nome é Mauricio Junior e hoje eu vou mostrar como converter um arquivo CSV para Json usando apenas duas linhas de código. Por várias vezes o meu chefe me pediu para pegar os dados de uma planilha Excel e colocar no database.

Utilizado

  • Ferramenta: Visual Studio
  • Linguagem de programação: C# (sharp)
  • Pacote: NuGet
  • Tipo de exemplo: Console application
  • Framework: .NET Core

Eu criei um aplicação do tipo console no primeiro passo e já comecei com o código. Vamos para prática. Lembro que este artigo foi criado para que você faça junto comigo, usando o passo a passo.

Depois de abrir o projeto, cliquei com o botão direito em cima da pasta de referência e cliquei na opção Manage NuGet Packages. Veja a figura 1.

Image

Figura 1 - Abrindo o pacote NuGet

Depois disso procurei o pacote chamado ConvertCsvToJson criado por mim mesmo e disponibilizado na loja de pacotes da Microsoft chamado NuGet.org. Veja a figura 2.

image

Figura 2 - Adicionando o NuGet na aplicação

Cliquei no botão Add Package para que já apareça em meu projeto.

Problema

O meu gerente pediu para pegar os dados de uma planilha em Excel para salvar no database específico que a empresa tem. Esse tipo de coisa acontece a todo tempo em grandes e pequenas empresas. Pessoas usam muito a planilha em Excel para fazer listas, gerar gráficos e tudo mais. A planilha que ele me passou tem essas informações aqui. Veja a figura 3.

Image

Figura 3 - Planilha de Excel

Eu notei os seguintes campos: Name, Email, Salary e Type. Os campos estão em inglês mas isso não é problema. Depois disso tem os valores de cada campo. O primeiro ponto aqui foi converter o Excel em arquivo CSV que é bem simples, bastou eu abrir o Excel e salvar como CSV. Veja a figura 4.

Image

Figura 4 - Convertendo Excel para CSV

Eu cliquei para salvar como e depois escolhi a opção CSV como está na figura 4.

Agora com o CSV em mãos, basta usar o componente que eu mesmo criei e disponibilizei grátis na Microsoft. Se você quiser ver mais componentes grátis que eu criei acesse www.mauriciojunior.net/nugets.

Codificando

Em duas linhas de código o sistema vai pegar todos os dados pra mim e depois eu posso trabalhar com eles de uma maneira simples e tranquila dentro da programação. Veja o código 1.

using ConvertCsvToJson;

namespace ConvertExcelToJson
{
    class Program
    {
        static void Main(string[] args)
        {
            var main = new Main();
            var result = ((IMain)main).ConvertCsvFileToJsonObject("Users.csv");

            Console.WriteLine(result);
            Console.ReadLine();
        }
    }
}

Código 1 - Usando o pacote ConvertCsvToJson

O primeiro ponto aqui foi fazer os importes necessários como o ConvertCsvToJson. Depois disso eu fiz a primeira instância usando a variável main var main = new Main(). Depois disso e na segunda linha eu usei a interface para chamar o método e o resultado eu enviei para outra variável chamada result, var result = ((IMain)main).ConvertCsvFileToJsonObject("User.csv") passando a minha planilha convertida para csv.

O resultado dessas duas linhasa foi uma lista com todos os valores do tipo string. Eu só mandei escrever na tela o resultado com os valores em string.

Com essas duas linhas de código tudo ficou bem simples para separar os dados e trabalhar com eles para gravar no banco de dados, mas isso ainda não resolveu todos os meus problemas. Agora eu preciso pegar os dados e separar de acordo com cada campo.

O meu resultado das duas linhas de código foi a string retornada com todos os valores lá. A figura 5 mostra esse dado quando eu analisei passo a passo no sistema, fazendo o debug.

Image

Figura 5 - Dados pegos do arquivo CSV

O código 2 mostra como fazer isso depois de pegar o resultado. O que eu preciso agora é gerar uma nova classe com todas as propriedades e o código já vai separar os dados de forma automática em cada campo como uma lista.

Cliquei com o botão direito e gerei uma nova classe chamada UserModel.cs

namespace ConvertExcelToJson
{
    public class UserModel
    {
        public string Name { get; set; }

        public string Age { get; set; }

        public string Email { get; set; }

        public string Salary { get; set; }

        public string Type { get; set; }

    }
}

Código 2 - Criando uma classe com as propriedades

Lembro que para gerar essas propriedades existe a linha de comando prop e depois basta clicar a tecla TAB duas vezes para que possa apenas digitar. Depois de criado a classe de modelo, quero fazer com que o meu resultado esteja em uma lista e cada valor esteja relacionado ao seu campo de forma correta, para isso eu vou fazer o código 3, ou seja, vou adicionar algumas coisas que não fiz anteriormente.

using ConvertCsvToJson;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;

namespace ConvertExcelToJson
{
    class Program
    {
        static void Main(string[] args)
        {
            var main = new Main();

            var result = ((IMain)main).ConvertCsvFileToJsonObject("Users.csv");

            var user = JsonConvert.DeserializeObject<IList<UserModel>>(result);

            Console.WriteLine(user[0].Name);

            Console.ReadLine();
        }
    }
}

Código 3 - Colocando os valores nas propriedades

O primeiro de mudança foi acrescentar os importes using Newtonsoft.Json e System.Collections.Generic porque eu vou usar a interface IList e vou usar o DeserializedObject.

A linha 3 do método Main onde eu criei a variável user faz toda a mágica. Eu peguei o resultado da variável result e coloquei dentro do método DeserializedObject<IList> e o resultado foi que todos os valores separados estão agora classificados e podem ser pegos apenas com o nome da propriedade.

No final, bastou colocar user[0].Name para pegar o nome da primeira lista de valores isso porque agora a variável virou uma lista de valores com posições dinâmica, ou seja, de acordo com o que tiver dentro do arquivo csv será criado, não importa a quantidade.

A figura 6 mostra como ficou separado cada valor pego do arquivo csv.

Image

Figura 6 - Resultado final.

Eu fico por aqui e espero que tenha gostado. Qualquer dúvida, pode entrar em contato comigo pela rede social Instagram em @mauriciojunior_net ou pelo meu site mauriciojunior.net.

Subscribe ecode10.com

Receive our latest updates about programming languages, software, database, books, ebooks, classes, jobs and more.
You can cancel anytime.

Log In





Related articles




Top