public string Importar(HttpPostedFileBase fileData, FormCollection forms, string tipo) { try { var openXmlHelper = new OpenXmlHelper(); var memoryStream = new MemoryStream(); fileData.InputStream.CopyTo(memoryStream); var listaDados = openXmlHelper.LerPlanilhaDados(memoryStream); int codigo = 0; tipo = tipo.Substring(0, tipo.IndexOf('?')); switch (EnumHelper.ParseEnumDescription<EnumTipoImportacao>(tipo)) { case EnumTipoImportacao.Fonte: FonteRepositorio.ExcluirTudo(WorkLifetimeManager.Value); foreach (var item in listaDados) { Int32.TryParse(item[0].ToString(), out codigo); FonteRepositorio.Salvar(WorkLifetimeManager.Value, new Fonte { Codigo = codigo, Descricao = item[1].ToString() }); } break; case EnumTipoImportacao.Linha: LinhaRepositorio.ExcluirTudo(WorkLifetimeManager.Value); foreach (var item in listaDados) { Int32.TryParse(item[0].ToString(), out codigo); LinhaRepositorio.Salvar(WorkLifetimeManager.Value, new Linha { Codigo = codigo, Descricao = item[1].ToString() }); } break; case EnumTipoImportacao.Produto: ProdutoRepositorio.ExcluirTudo(WorkLifetimeManager.Value); foreach (var item in listaDados) { Int32.TryParse(item[0].ToString(), out codigo); ProdutoRepositorio.Salvar(WorkLifetimeManager.Value, new Produto { Codigo = codigo, Descricao = item[1].ToString() }); } break; } WorkLifetimeManager.Value.Commit(); return "Dados importados com sucesso!"; } catch { WorkLifetimeManager.Value.Rollback(); return "Não foi possível importar os dados. Verifique a planilha e tente novamente!"; } }
//public JsonResult Exportar(int id) //{ // bool sucesso; // string mensagem; // var nomeArquivo = string.Empty; // try // { // var laudo = LaudoRepositorio.Obter(WorkLifetimeManager.Value, id); // if (laudo == null) // throw new InvalidOperationException(string.Format("Laudo não encontrado (Id: {0})", id)); // nomeArquivo = ExportarLaudo(laudo); // sucesso = true; // mensagem = "Arquivo exportado com sucesso!"; // } // catch (Exception exception) // { // sucesso = false; // mensagem = "Não foi possível realizar a operação: " + exception.Message; // } // return Json(new { sucesso, mensagem, nomeArquivo }); //} public ActionResult Exportar(int id) { OpenXmlHelper openXmlHelper = new OpenXmlHelper(); MemoryStream memoryStream = new MemoryStream(); var laudo = LaudoRepositorio.Obter(WorkLifetimeManager.Value, id); var nomeArquivo = string.Format("UPredio_{0}.xlsx", laudo.Referencia.Replace("/", "")); HttpContext.Response.Clear(); HttpContext.Response.AddHeader("content-disposition", string.Format("attachment;filename={0}", nomeArquivo)); HttpContext.Response.Charset = ""; HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache); HttpContext.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; WorkLifetimeManager.Value.BeginTransaction(IsolationLevel.Serializable); try { var configuracao = ConfiguracaoRepositorio.Obter(WorkLifetimeManager.Value); var caminhoTemplate = Path.Combine(Server.MapPath("~/Content/uploads/"), "Source.xlsx"); //var caminhoArquivo = Path.Combine(Server.MapPath("~/Content/uploads/"), nomeArquivo); using (FileStream source = System.IO.File.Open(caminhoTemplate, FileMode.Open)) { source.CopyTo(memoryStream); openXmlHelper.PreencherPlanilha(memoryStream, laudo, configuracao); } laudo = LaudoRepositorio.Obter(WorkLifetimeManager.Value, laudo.LaudoID); laudo.Status = (int)EnumStatusLaudo.Concluido; LaudoRepositorio.Salvar(WorkLifetimeManager.Value, laudo); WorkLifetimeManager.Value.Commit(); } catch { WorkLifetimeManager.Value.Rollback(); } memoryStream.Flush(); memoryStream.WriteTo(HttpContext.Response.OutputStream); HttpContext.Response.End(); return File(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", nomeArquivo); }