예제 #1
0
        private async Task GerarRelatorioFluviometrico()
        {
            foreach (var item in selectLstBox.Items)
            {
                string codigo = item.ToString().Split('-')[0];

                Atividade.Text = $"Buscando dados estação {codigo} no Hidroweb-ANA";

                var dadosVazaoEstacao = await ServiceANAHelper.DadosFluviometricosVazaoEstacao(Convert.ToInt32(codigo));

                var dadosCotasEstacao = await ServiceANAHelper.DadosFluviometricosCotaEstacao(Convert.ToInt32(codigo));

                try
                {
                    if (dadosVazaoEstacao.EhValido && dadosCotasEstacao.EhValido)
                    {
                        Atividade.Text = $"Gerando planilha para estação: {codigo}";

                        var dadosSerieHistoricaCotas = DataTableParaSerieHistoricaCota(dadosCotasEstacao.Dados);
                        var dadosSerieHistoricaVazao = DataTableParaSerieHistoricaVazao(dadosVazaoEstacao.Dados);

                        var estacao = ListaEstacoesCache.Estacoes.First(c => c.Codigo == Convert.ToInt32(codigo));

                        _Workbook planilha = ExcelInteropHelper.CriarNovaPlanilhaFluviometrico("item");
                        planilha = ExcelInteropHelper.CriarAbaEstacaoFluviometrica(planilha, dadosSerieHistoricaVazao, estacao);
                        planilha = ExcelInteropHelper.CriarAbaCotas(planilha, dadosSerieHistoricaCotas, estacao);
                        planilha = ExcelInteropHelper.CriarAbaVazao(planilha, dadosSerieHistoricaVazao, estacao);
                        planilha = ExcelInteropHelper.CriarCotaVazaoDiaria(planilha, dadosSerieHistoricaCotas, dadosSerieHistoricaVazao, estacao);
                        planilha = ExcelInteropHelper.CriarGraficoCotaTempo(planilha, estacao);
                        planilha = ExcelInteropHelper.CriarGraficoCotaVazao(planilha, estacao);


                        Atividade.Text = $"Salvando planilha.";

                        planilha.SaveAs(escolherDiretorio.SelectedPath + $"/{codigo}", Microsoft.Office.Interop.Excel.XlFileFormat.xlOpenXMLWorkbook, null,
                                        null, false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,
                                        Microsoft.Office.Interop.Excel.XlSaveConflictResolution.xlUserResolution, true,
                                        null, null, null);

                        ExcelInteropHelper.FecharAplicacao(planilha);
                    }
                    else
                    {
                        MessageBox.Show($"Não foi possível encontrar dados para {Convert.ToInt32(codigo)}", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
                    }
                }
                catch (Exception ex)
                {
                    boxBusca.Enabled   = true;
                    boxSelecao.Enabled = true;
                    Atividade.Text     = string.Empty;
                    MessageBox.Show(ex.Message, "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
                }
            }
        }