Created
February 20, 2013 02:27
-
-
Save cleytonferrari/4992229 to your computer and use it in GitHub Desktop.
Código do post em meu blog sobre Arquivos CSV com C# no ASP .Net MVC 4
We can make this file beautiful and searchable if this error is corrected: It looks like row 5 should actually have 1 column, instead of 2. in line 4.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
NUMCAP;CATINIC;CATFIM;DESCRICAO;DESCRABREV; | |
1;A00;B99;Capítulo I - Algumas doenças infecciosas e parasitárias;I. Algumas doenças infecciosas e parasitárias; | |
2;C00;D48;Capítulo II - Neoplasias [tumores];II. Neoplasias (tumores); | |
3;D50;D89;Capítulo III - Doenças do sangue e dos órgãos hematopoéticos e alguns transtornos imunitários;III. Doenças sangue órgãos hemat e transt imunitár; | |
4;E00;E90;Capítulo IV - Doenças endócrinas, nutricionais e metabólicas;IV. Doenças endócrinas nutricionais e metabólicas; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.Linq; | |
using System.Web; | |
using System.Web.Mvc; | |
using Repositorio; | |
namespace UI.Web.Controllers | |
{ | |
public class HomeController : Controller | |
{ | |
// | |
// GET: /Home/ | |
public ActionResult Index() | |
{ | |
var repositorio = new Repositorio.Repositorio(); | |
var capitulos = repositorio.ListarCapitulos().ToList(); | |
return View(capitulos); | |
} | |
public ActionResult Capitulo(string id) | |
{ | |
var repositorio = new Repositorio.Repositorio(); | |
var capitulo = repositorio.ListarCapitulos().FirstOrDefault(x => x.NumeroCapitulo == id); | |
ViewBag.capitulo = capitulo; | |
var grupos = repositorio.ListarGrupos().Where(x => | |
x.CategoriaInicialCodigo >= capitulo.CategoriaInicialCodigo && | |
x.CategoriaFinalCodigo <= capitulo.CategoriaFinalCodigo | |
).ToList(); | |
return View(grupos); | |
} | |
public ActionResult Grupo(string categoriaInicial, string categoriaFinal) | |
{ | |
var repositorio = new Repositorio.Repositorio(); | |
var grupo = repositorio.ListarGrupos().FirstOrDefault(x => x.CategoriaInicial == categoriaInicial && x.CategoriaFinal == categoriaFinal); | |
ViewBag.grupo = grupo; | |
var capitulo = repositorio.ListarCapitulos().FirstOrDefault(x => | |
grupo.CategoriaInicialCodigo >= x.CategoriaInicialCodigo && | |
grupo.CategoriaFinalCodigo <= x.CategoriaFinalCodigo | |
); | |
ViewBag.capitulo = capitulo; | |
var categorias = repositorio.ListarCategorias().Where(x => | |
x.CodigoDaCategoriaCodigo >= grupo.CategoriaInicialCodigo && | |
x.CodigoDaCategoriaCodigo <= grupo.CategoriaFinalCodigo | |
).ToList(); | |
return View(categorias); | |
} | |
public ActionResult Categoria(string codigoDaCategoria) | |
{ | |
var repositorio = new Repositorio.Repositorio(); | |
var categoria = repositorio.ListarCategorias().FirstOrDefault(x => x.CodigoDaCategoria == codigoDaCategoria); | |
var subCategorias = repositorio.ListarSubCategorias().Where(x => | |
x.CodigoDaCategoria == codigoDaCategoria).ToList(); | |
categoria.ListaDeSubCategorias = subCategorias; | |
var grupo = repositorio.ListarGrupos().FirstOrDefault(x => categoria.CodigoDaCategoriaCodigo >= x.CategoriaInicialCodigo && categoria.CodigoDaCategoriaCodigo <= x.CategoriaFinalCodigo); | |
ViewBag.grupo = grupo; | |
var capitulo = repositorio.ListarCapitulos().FirstOrDefault(x => | |
grupo.CategoriaInicialCodigo >= x.CategoriaInicialCodigo && | |
grupo.CategoriaFinalCodigo <= x.CategoriaFinalCodigo | |
); | |
ViewBag.capitulo = capitulo; | |
return View(categoria); | |
} | |
public ActionResult Detalhe(string codigo) | |
{ | |
var repositorio = new Repositorio.Repositorio(); | |
var subcategoria = repositorio.ListarSubCategorias().FirstOrDefault(x => x.CodigoDaSubCategoria == codigo); | |
return View(subcategoria); | |
} | |
public ActionResult Busca (string busca) | |
{ | |
busca = Ferramentas.SubstituiAcentos(busca); | |
var repositorio = new Repositorio.Repositorio(); | |
var subCategorias = repositorio.ListarSubCategorias().Where(x => x.DescricaoSemAcentos.ToLower().Contains(busca.ToLower())).ToList(); | |
ViewBag.busca = busca; | |
return View(subCategorias); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@model List<Repositorio.ViewModelCapitulo> | |
@{ | |
ViewBag.Title = "W7SAUDE"; | |
} | |
<h2>Busca CID</h2> | |
<div class="span12" style="margin-left: 0"> | |
@Html.Partial("_formBusca") | |
<div class="span9"> | |
@foreach (var capitulo in Model) | |
{ | |
<div class="span6" style="margin-left: 0; height: 110px; padding: 5px;"> | |
@{ | |
var titulo = capitulo.Descricao.Split('-'); | |
titulo[0] = titulo[0].Trim(); | |
titulo[1] = titulo[1].Trim(); | |
} | |
<h2><a href="~/Home/Capitulo/@capitulo.NumeroCapitulo">@titulo[0]</a></h2> | |
<p>@titulo[1]</p> | |
</div> | |
} | |
</div> | |
</div> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System.Collections.Generic; | |
using System.IO; | |
using CsvHelper; | |
using CsvHelper.Configuration; | |
namespace Repositorio | |
{ | |
public class LerCsv<T> where T : class | |
{ | |
public IEnumerable<T> Ler(string csv) | |
{ | |
if (csv == null) return null; | |
var configuracaoCsv = new CsvConfiguration { Delimiter = ";" }; | |
var csvReader = new CsvReader(new StringReader(csv), configuracaoCsv); | |
return csvReader.GetRecords<T>(); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System.Collections.Generic; | |
namespace Repositorio | |
{ | |
public class Repositorio | |
{ | |
public IEnumerable<ViewModelCapitulo> ListarCapitulos() | |
{ | |
var recurso = Properties.Resources.CID_10_CAPITULOS; | |
return new LerCsv<ViewModelCapitulo>().Ler(recurso); | |
} | |
public IEnumerable<ViewModelGrupo> ListarGrupos() | |
{ | |
var recurso = Properties.Resources.CID_10_GRUPOS; | |
return new LerCsv<ViewModelGrupo>().Ler(recurso); | |
} | |
public IEnumerable<ViewModelCategoria> ListarCategorias() | |
{ | |
var recurso = Properties.Resources.CID_10_CATEGORIAS; | |
return new LerCsv<ViewModelCategoria>().Ler(recurso); | |
} | |
public IEnumerable<ViewModelSubCategoria> ListarSubCategorias() | |
{ | |
var recurso = Properties.Resources.CID_10_SUBCATEGORIAS; | |
return new LerCsv<ViewModelSubCategoria>().Ler(recurso); | |
} | |
public IEnumerable<ViewModelGrupoCid0> ListarGruposCid0() | |
{ | |
var recurso = Properties.Resources.CID_O_GRUPOS; | |
return new LerCsv<ViewModelGrupoCid0>().Ler(recurso); | |
} | |
public IEnumerable<ViewModelCategoriaCid0> ListarCateogiasCid0() | |
{ | |
var recurso = Properties.Resources.CID_O_CATEGORIAS; | |
return new LerCsv<ViewModelCategoriaCid0>().Ler(recurso); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class ViewModelCapitulo | |
{ | |
//NUMCAP: número do capítulo (em numeração arábica); se igual a zero, indica o capítulo que contém os códigos não oficialmente pertinentes à CID-10; | |
[CsvField(Name = "NUMCAP")] | |
public string NumeroCapitulo { get; set; } | |
//CATINIC: código da primeira categoria do capítulo; | |
[CsvField(Name = "CATINIC")] | |
public string CategoriaInicial { get; set; } | |
[CsvField(Ignore = true)] | |
public int CategoriaInicialCodigo | |
{ | |
get { return Ferramentas.TrocaLetraPorNumero(CategoriaInicial); } | |
} | |
//CATFIM: código da última categoria do capítulo; | |
[CsvField(Name = "CATFIM")] | |
public string CategoriaFinal { get; set; } | |
[CsvField(Ignore = true)] | |
public int CategoriaFinalCodigo | |
{ | |
get { return Ferramentas.TrocaLetraPorNumero(CategoriaFinal); } | |
} | |
//DESCRICAO: descrição (nome) do capítulo; e | |
[CsvField(Name = "DESCRICAO")] | |
public string Descricao { get; set; } | |
//DESCRABREV: descrição (nome) abreviado do capítulo, com até 50 caracteres. | |
[CsvField(Name = "DESCRABREV")] | |
public string DescricaoAbreviada { get; set; } | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment