コード例 #1
0
        /// <summary>
        /// Lê o arquivo excel informado e grava no banco de dados os dados desse arquivo
        /// </summary>
        /// <param name="arquivo">Informações do arquivo excel</param>
        /// <returns></returns>
        private async Task Cadastrar(ArquivoDto arquivo)
        {
            using (var pck = new ExcelPackage(arquivo.StreamArquivo))
            {
                var ws = pck.Workbook.Worksheets[0];

                var totalColunas = ws.ObterDimensoes().End.Column;
                var totalLinhas  = ws.ObterDimensoes().End.Row;

                for (var row = 2; row <= totalLinhas; row++)
                {
                    var cadastrar = true;

                    var linha = new LinhaArquivoDto(Guid.NewGuid(), arquivo.Id);

                    for (var col = 1; col <= totalColunas; col++)
                    {
                        switch (totalColunas)
                        {
                        case 3:
                            linha.Linha = row - 1;

                            switch (col)
                            {
                            case 1:
                                linha.Offset = ws.Cells[row, col].Value.ToString();
                                break;

                            case 2:
                                linha.Original = ws.Cells[row, col].Value.ConvertStringToUtf8();
                                break;

                            case 3:
                                linha.Traducao = ws.Cells[row, col].Value.ConvertStringToUtf8();
                                break;
                            }
                            break;

                        case 4:
                            if (Enum.TryParse(ws.Cells[row, 1].Value.ToString(), true, out YakuzaKiwamiColunasPermitidas _))
                            {
                                switch (col)
                                {
                                case 1:
                                    linha.Coluna = ws.Cells[row, col].Value.ToString();
                                    break;

                                case 2:
                                    linha.Linha = int.Parse(ws.Cells[row, col].Value.ToString() !) + 1;
                                    break;

                                case 3:
                                    linha.Original = ws.Cells[row, col].Value.ConvertStringToUtf8();
                                    break;

                                case 4:
                                    linha.Traducao = ws.Cells[row, col].Value.ConvertStringToUtf8();
                                    break;
                                }
                            }
                            else
                            {
                                cadastrar = false;
                            }
                            break;
                        }
                    }

                    if (cadastrar)
                    {
                        arquivo.Linhas.Add(linha);
                    }
                }
            }

            await _arquivosRepositorio.CadastrarEditar(arquivo);
        }
コード例 #2
0
 public static LinhaArquivo ConverterParaModel(this LinhaArquivoDto dto)
 {
     return(ConverterPara(dto, new LinhaArquivo()));
 }