none
Acessar Excel C# RRS feed

  • Pergunta

  • Tentando acessar planilha excel no c# (MVC WEAPI).

    string[] s = new string[2] { "c:/", "Planilhas/"}; var caminho = System.IO.Path.Combine(s); if (System.IO.File.Exists(caminho + "Planilha.xlsx")) { Application aplicacao; _Workbook livro; Microsoft.Office.Interop.Excel._Worksheet pagina; object misvalue = System.Reflection.Missing.Value; aplicacao = new Microsoft.Office.Interop.Excel.Application(); System.IO.Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory); livro = (Microsoft.Office.Interop.Excel._Workbook)(aplicacao.Workbooks.Add(System.IO.Path.Combine(caminho + "Planilha.xlsx")));

    //--............. trabalhando aqui dentro

    aplicacao.UserControl = false;
                    livro.SaveAs(caminho + "Certificado/" + usuario + agora.ToString("ddMMyyyyHHmmss") + ".xlsx", Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookDefault, Type.Missing, Type.Missing,
                false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,
                Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

                    livro.Close();

    mas está dando este erro:

    O Microsoft Excel não pode acessar o arquivo 'C:\\//Planilhas/Certificado/C2BFB000'. Há várias razões possíveis:\r\n\r\n• O nome do arquivo ou caminho não existe.\r\n• O arquivo está sendo usado por outro programa.\r\n• A pasta de trabalho que você está tentando salvar tem o mesmo nome de outra \r\npasta de trabalho aberta no momento.",


    Midana Fernandes Sana Fortaleza - CE Brasil

    segunda-feira, 28 de março de 2016 14:11

Todas as Respostas

  • Aparentemente seu caminho está incorreto, troque a barra (/) por duas barras invertidas (\\) no seu Combine.

    string[] s = new string[2] { "c:\\", "Planilhas\\" };
    var caminho = System.IO.Path.Combine(s);
    
    if (System.IO.File.Exists(caminho + "Planilha.xlsx"))
    {
        Application aplicacao;
        _Workbook livro;
        Microsoft.Office.Interop.Excel._Worksheet pagina;
        object misvalue = System.Reflection.Missing.Value;
    
        aplicacao = new Microsoft.Office.Interop.Excel.Application();
        System.IO.Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);
    
        livro = (Microsoft.Office.Interop.Excel._Workbook)(aplicacao.Workbooks.Add(System.IO.Path.Combine(caminho + "Planilha.xlsx")));
    
        //--............. trabalhando aqui dentro
        aplicacao.UserControl = false;
        livro.SaveAs(caminho + "Certificado\\" + usuario + agora.ToString("ddMMyyyyHHmmss") + ".xlsx", Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookDefault, Type.Missing, Type.Missing,
    false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,
    Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
    
        livro.Close();
    }

    veja alguns exemplos do System.IO.Path.Combine

    https://msdn.microsoft.com/pt-br/library/fyy7a5kt%28v=vs.110%29.aspx

    • Sugerido como Resposta Antero Marques terça-feira, 29 de março de 2016 05:55
    terça-feira, 29 de março de 2016 05:14
  • Obrigado Cesar Cassiano pela resposta,

    Na verdade "/" é a mesma coisa de "\\". Então mesmo trocando para "\\", quando vou debugar as duas opções funcionam, mas quando publico no IIS não funcionam.

    string caminho = "C:\\Planilhas";
    livro = (Microsoft.Office.Interop.Excel._Workbook)(aplicacao.Workbooks.Add(caminho+"\\P.xlsx"));
    pagina = (Microsoft.Office.Interop.Excel._Worksheet)livro.Sheets["Aba"];

    Com isso estou acessando este arquivo, porem quando publico no IIS, ele me dá este erro:

    O Microsoft Excel não pode acessar o arquivo 'C:\\Planilhas\\P.xlsx'. Há várias razões possíveis:\r\n\r\n• O nome do arquivo ou caminho não existe.\r\n• O arquivo está sendo usado por outro programa.\r\n• A pasta de trabalho que você está tentando salvar tem o mesmo nome de outra \r\npasta de trabalho aberta no momento."


    Midana Fernandes Sana Fortaleza - CE Brasil

    terça-feira, 29 de março de 2016 11:42