private DataTable FormatarDataTable(DataTable dt, EnumTipoRelatorio tipoRelatorio) { if (dt.Columns.Contains("TotalCount")) { dt.Columns.Remove("TotalCount"); } switch (tipoRelatorio) { case EnumTipoRelatorio.EstoqueInicial: case EnumTipoRelatorio.EstoqueFinal: dt.Columns["ProdutoDescricao"].ColumnName = "Descrição Original"; dt.Columns["ProdutoUnificado"].ColumnName = "Descrição Unificada"; dt.Columns["Quantidade"].ColumnName = "Quantidade"; dt.Columns["UnidadeDescricao"].ColumnName = "Unidade"; dt.Columns["ValorUnitario"].ColumnName = "Valor Unitário"; dt.Columns["ValorTotal"].ColumnName = "Valor Total"; break; case EnumTipoRelatorio.MovimentacaoEntrada: dt.Columns["SEF_NFE_ECF"].ColumnName = "SEF/NFE"; dt.Columns["NUM_NF"].ColumnName = "Número NF"; dt.Columns["DataEntrada"].ColumnName = "Data de Entrada"; dt.Columns["ProdutoDescricao"].ColumnName = "Descrição Original"; dt.Columns["ProdutoUnificado"].ColumnName = "Descrição Unificada"; dt.Columns["Quantidade"].ColumnName = "Quantidade"; dt.Columns["UnidadeDescricao"].ColumnName = "Unidade"; dt.Columns["ValorUnitario"].ColumnName = "Valor Unitário"; dt.Columns["ValorTotal"].ColumnName = "Valor Total"; dt.Columns["CFOP"].ColumnName = "CFOP"; break; case EnumTipoRelatorio.MovimentacaoSaida: dt.Columns["SEF_NFE_ECF"].ColumnName = "SEF/NFE/ECF"; dt.Columns["NUM_NF"].ColumnName = "Número NF/COO"; dt.Columns["DataEntrada"].ColumnName = "Data de Emissão"; dt.Columns["ProdutoDescricao"].ColumnName = "Descrição Original"; dt.Columns["ProdutoUnificado"].ColumnName = "Descrição Unificada"; dt.Columns["Quantidade"].ColumnName = "Quantidade"; dt.Columns["UnidadeDescricao"].ColumnName = "Unidade"; dt.Columns["ValorUnitario"].ColumnName = "Valor Unitário"; dt.Columns["ValorTotal"].ColumnName = "Valor Total"; dt.Columns["CFOP"].ColumnName = "CFOP"; break; case EnumTipoRelatorio.Produto: dt.Columns["DescricaoOriginal"].ColumnName = "Descrição Original"; dt.Columns["DescricaoUnificada"].ColumnName = "Descrição Unificada"; dt.Columns["DescricaoUnidade"].ColumnName = "Unidade"; break; } return(dt); }
/// <summary> /// Gerar um arquivo zip a partir de um datatable /// </summary> /// <param name="data">Dados</param> /// <param name="nomeArquivo">Nome do arquivo</param> /// <returns>Caminho do arquivo</returns> private string SalvarExcelParticionado(string nomeArquivo, int idAnalise, EnumTipoRelatorio tipoRelatorio) { var novoNome = string.Empty; Guid guid = Guid.NewGuid(); string diretorio = Path.Combine(Server.MapPath("~/Download/"), HttpContext.Session.SessionID); string arquivoZip = Path.Combine(Server.MapPath("~/Download/"), guid.ToString() + ".zip"); DataTable dt = new DataTable(); if (Directory.Exists(diretorio)) { Directory.Delete(diretorio, true); } Directory.CreateDirectory(diretorio); bool continuarImportacao = true; for (int i = 0; continuarImportacao; i++) { novoNome = Path.Combine(diretorio, Path.GetFileNameWithoutExtension(nomeArquivo) + "_Parte_" + (i + 1).ToString() + ".xls"); using (StreamWriter sw = new StreamWriter(novoNome, false, Encoding.UTF8)) { using (HtmlTextWriter hw = new HtmlTextWriter(sw)) { switch (tipoRelatorio) { case EnumTipoRelatorio.Desconhecido: throw new Exception("Tipo de relatório inválido."); case EnumTipoRelatorio.Levantamento: List <RelatorioLevantamentoVO> relatorioLevantamentoVOs = RecuperaDadosLevantamento(Util.quantidadeQuebraExcel.ToString(), (i * Util.quantidadeQuebraExcel).ToString(), "0", "asc", "", "0", idAnalise.ToString()); continuarImportacao = relatorioLevantamentoVOs.Any(); if (continuarImportacao) { dt = FormatarDataTable(relatorioLevantamentoVOs.AsDataTable(), tipoRelatorio); } break; case EnumTipoRelatorio.Movimentacao: List <RelatorioMovimentacaoVO> relatorioMovimentacaoVOs = RecuperaDadosMovimentacao(Util.quantidadeQuebraExcel.ToString(), (i * Util.quantidadeQuebraExcel).ToString(), "0", "asc", "", "0", idAnalise.ToString()); continuarImportacao = relatorioMovimentacaoVOs.Any(); if (continuarImportacao) { dt = FormatarDataTable(relatorioMovimentacaoVOs.AsDataTable(), tipoRelatorio); } break; case EnumTipoRelatorio.PrecoUnitario: List <RelatorioPrecoUnitarioVO> relatorioPrecoUnitarioVOs = RecuperaDadosRelatorioPrecoUnitario(Util.quantidadeQuebraExcel.ToString(), (i * Util.quantidadeQuebraExcel).ToString(), "0", "asc", "", "0", idAnalise.ToString()); continuarImportacao = relatorioPrecoUnitarioVOs.Any(); if (continuarImportacao) { dt = FormatarDataTable(relatorioPrecoUnitarioVOs.AsDataTable(), tipoRelatorio); } break; case EnumTipoRelatorio.Venda: List <RelatorioVendaVO> relatorioVendaVOs = RecuperaDadosVenda(Util.quantidadeQuebraExcel.ToString(), (i * Util.quantidadeQuebraExcel).ToString(), "0", "asc", "", "0", idAnalise.ToString()); continuarImportacao = relatorioVendaVOs.Any(); if (continuarImportacao) { dt = FormatarDataTable(relatorioVendaVOs.AsDataTable(), tipoRelatorio); } break; } if (continuarImportacao) { GridView gridView = new GridView(); gridView.DataSource = dt; gridView.HeaderStyle.Font.Bold = true; gridView.DataBind(); gridView.RenderControl(hw); } } } if (!continuarImportacao) { if (System.IO.File.Exists(novoNome)) { System.IO.File.Delete(novoNome); } } } if (System.IO.File.Exists(arquivoZip)) { System.IO.File.Delete(arquivoZip); } ZipFile.CreateFromDirectory(diretorio, arquivoZip); return(arquivoZip); }
private DataTable FormatarDataTable(DataTable dt, EnumTipoRelatorio tipoRelatorio) { if (dt.Columns.Contains("TotalCount")) { dt.Columns.Remove("TotalCount"); } switch (tipoRelatorio) { case EnumTipoRelatorio.Movimentacao: dt.Columns["ProdutoDescricao"].ColumnName = "Descrição Original"; dt.Columns["ProdutoUnificado"].ColumnName = "Descrição Unificada"; dt.Columns["UnidadeDescricao"].ColumnName = "Unidade"; dt.Columns["QtdInicial"].ColumnName = "Est. Inicial"; dt.Columns["QtdEntrada"].ColumnName = "Entradas"; dt.Columns["QtdSaida"].ColumnName = "Saídas"; dt.Columns["QtdFinal"].ColumnName = "Est. Final"; dt.Columns["ValorInicial"].ColumnName = "Vlr Unit Inicial"; dt.Columns["ValorEntrada"].ColumnName = "Vlr Unit Entrada"; dt.Columns["ValorSaida"].ColumnName = "Vlr Unit Saída"; dt.Columns["ValorFinal"].ColumnName = "Vlr Unit Final"; break; case EnumTipoRelatorio.Venda: dt.Columns["SEF_NFE_ECF"].ColumnName = "SEF/NFE/ECF"; dt.Columns["NUM_NF"].ColumnName = "Número NF/COO"; dt.Columns["DataEmissao"].ColumnName = "Data de Emissão"; dt.Columns["Descricao"].ColumnName = "Descrição Original"; dt.Columns["DescricaoUnificada"].ColumnName = "Descrição Unificada"; dt.Columns["Quantidade"].ColumnName = "Quantidade"; dt.Columns["DescricaoUnidade"].ColumnName = "Unidade"; dt.Columns["ValorUnitario"].ColumnName = "Valor Unitário"; dt.Columns["ValorTotal"].ColumnName = "Valor Total"; dt.Columns["CFOP"].ColumnName = "CFOP Saída"; dt.Columns["NFEntrada"].ColumnName = "NF Entrada"; dt.Columns["DataEntradaMenor"].ColumnName = "Data de Entrada"; dt.Columns["CFOPEntrada"].ColumnName = "CFOP Entrada"; dt.Columns["ValorUnitarioMenor"].ColumnName = "Vlr Unit Mínimo"; dt.Columns["ValorUnitarioDiferenca"].ColumnName = "Diferença Valor Unit"; dt.Columns["BCEstorno"].ColumnName = "BC a Estornar"; dt.Columns["ICMSEstornar"].ColumnName = "ICMS a Estornar"; break; case EnumTipoRelatorio.PrecoUnitario: dt.Columns["Descricao"].ColumnName = "Descrição Unificada"; dt.Columns["ValorUnitario"].ColumnName = "Valor Unitário"; dt.Columns["PlanilhaOrigem"].ColumnName = "Origem"; dt.Columns["NUM_NF"].ColumnName = "Num. NF"; dt.Columns["DataEntrada"].ColumnName = "Data de Emissão"; break; case EnumTipoRelatorio.Levantamento: if (dt.Columns.Contains("IdProdutoPai")) { dt.Columns.Remove("IdProdutoPai"); } if (dt.Columns.Contains("CorLinha")) { dt.Columns.Remove("CorLinha"); } dt.Columns["ProdutoDescricao"].ColumnName = "Descrição Unificada"; dt.Columns["UnidadeDescricao"].ColumnName = "Unid"; dt.Columns["QtdInicial"].ColumnName = "Estoque Inicial SEF"; dt.Columns["QtdEntrada"].ColumnName = "Entradas"; dt.Columns["QtdSaida"].ColumnName = "Saídas"; dt.Columns["QtdFinalCalculado"].ColumnName = "Estoque Final Calculado"; dt.Columns["QtdFinal"].ColumnName = "Estoque Final SEF"; dt.Columns["QtdDiferenca"].ColumnName = "Diferença"; dt.Columns["OMISSAO"].ColumnName = "Omissão"; dt.Columns["ValorUnitario"].ColumnName = "Valor Unitário (R$)"; dt.Columns["BaseCalculo"].ColumnName = "Base Cálculo (R$)"; break; } return(dt); }