Que referência eu preciso usar para usar o Microsoft.Office.Interop.Excel no .NET?

102

Estou interessado em usar C # para manipular / automatizar arquivos do Excel.

Depois de navegar na web, encontrei o VSTO, mas parece que você não pode usá-lo no Visual Studio Express Edition, portanto, não posso usá-lo.

Há poucos minutos, percebi uma pergunta neste site que usava este namespace em seu código:

Microsoft.Office.Interop.Excel

Portanto, gostaria de saber se tudo o que preciso usar é adicionar a referência necessária e, em caso afirmativo, qual referência adicionar?

ATUALIZAR

Instalei "Primary Interop Assemblies" como a resposta aceita sugerida, mas por algum motivo eles ainda estão ausentes na caixa de diálogo Add Reference em ".NET", mas estão presentes no GAC.

Então, acabei de adicionar a referência usando "Navegar" e localizada Microsoft.Office.Interop.Excel.dllna pasta GAC.

Mas procurando perguntas semelhantes neste site sobre a adição de referência do GAC, parece que isso não é recomendado.

user850010
fonte

Respostas:

102

Atualização (obrigado, usuário 2347528)

Esses assemblies estão disponíveis como pacotes NuGet, o que é muito mais fácil do que minha resposta original.

Você pode instalar clicando com o botão direito do mouse em Referências em seu projeto e selecionando Gerenciar pacotes NuGet ... e procurando por um dos pacotes listados abaixo, ou instalar usando o Console do gerenciador de pacotes:

PM> Install-Package Microsoft.Office.Interop.Excel

Eles estão disponíveis como "Assemblies de interoperabilidade primários", que podem ser instalados com o Office ou baixados e instalados separadamente. Como: Instalar assemblies de interoperabilidade primários do Office .

Depois de instalados, você pode referenciá-los em seu projeto na caixa de diálogo Adicionar Referência, em .NET. Se você não vir os assemblies Microsoft.Office.Interop listados, então eles ainda não foram instalados. Instale-os a partir de sua configuração ou baixe e instale-os separadamente (veja meu link acima para os downloads).

moribvndvs
fonte
Encontrei um monte de componentes na guia "Com" chamados Microsoft Office .... São esses?
user850010
1
Esses são serviços COM para os quais o Visual Studio pode gerar assemblies de interoperabilidade .NET. Não é recomendado que você os use; você deve usar os assemblies PIA lançados pela Microsoft. Eles devem aparecer na guia .NET na caixa de diálogo Adicionar referências. Se você não os vir, você precisa instalar o PIA da configuração do Office ou baixá-los separadamente, conforme linkado em minha resposta.
moribvndvs
2
@HackedByChinese Não vejo nenhuma guia .NET na caixa de diálogo Adicionar referências
1
No Visual Studio 2013, encontrei essas referências em Assemblies-> Extensions no menu esquerdo da janela Add References.
Benjamin Ray
1
Estou tentando instalar um programa C # que usa o Microsoft.Office.Interop.Excel.dll em um servidor Windows 2012. O programa funciona bem no meu PC com Windows 7, mas mesmo depois de instalar os PIAs no servidor, ainda recebo uma mensagem de erro sobre os componentes do System.Runtime.Interop.COM ausentes. O programa é interrompido quando tento instanciar o objeto Excel.Application (). Há mais alguma coisa que estou perdendo?
Melanie
50

Só tive esse problema e aceitar a resposta não me ajudou, mas resolvi com:

Add reference > Browse > C: > Windows > assembly > GAC > Microsoft.Office.Interop.Excel > 12.0.0.0_etc > Microsoft.Office.Interop.Excel.dll

Robert
fonte
2
Eu estava procurando por essa solução em todos os lugares.
Karim O.
3
Obrigado pela dica. É deliciosamente irônico que a própria Microsoft não consiga fazer isso funcionar de maneira confiável - 2014 e ainda estamos nos referindo diretamente a .dlls ...
Mike Honey
12
Add Reference-> COM-> Microsoft Excel 12.0 Object Libraryfaz o mesmo.
primo
Está funcionando no servidor? sem instalar o office no servidor?
Naveen Katakam,
ok obrigado. você tem alguma ideia? posso usá-lo sem instalar o office .. Estou usando o azure.
Naveen Katakam,
24

As respostas não me ajudaram a resolver meu problema, não consegui encontrar (e navegar) os assemblies, embora os tenha instalado usando o instalador msi da Microsoft. Para mim, o conjunto do excel está localizado emC:\Windows\assembly\GAC_MSIL\Microsoft.Office.Interop.Excel\14.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Excel.dll

0x8BADF00D
fonte
Depois de experimentar a pasta GAC, GAC_32 e GAC_64, pensei que nunca estaria na última pasta GAC_MSIL. Mas era. Obrigado por seu comentário. Funcionou muito bem para mim!
Marty_in_a_Box
Resposta mais simples e melhor. Valeu cara.
Wessam El Mahdy 01 de
8

Basta adicionar a referência de Microsoft.Office.Interop.Excel.

Inclui aulas relacionadas ao MicroSoft Excel, sem necessidade de adicionar mais referências.

RAKESH HOLKAR
fonte
1
Essa foi a primeira coisa que tentei. Mas a parte "Office" não foi encontrada.
user850010
Na verdade, tive o mesmo problema que @ user850010, mas finalmente percebi que estava clicando com o botão direito e adicionando a pasta de referências do projeto errado na minha solução.
Usuário
4

Eu acho que o que você está tentando fazer é adicionar Microsoft.Office.Interop.Excela usinginstrução sem adicionar sua referência em seu aplicativo, nesse caso, ela não será encontrada. Antes de chamá-lo com a usinginstrução, você precisa adicionar uma referência ao seu aplicativo. Clique com o botão direito Referencese adicione a Excel Interopreferência.

Misam
fonte
4

Adicionar referência> Navegar> C:> Windows> montagem> GAC> Microsoft.Office.Interop.Excel> 12.0.0.0_wasd ..> Microsoft.Office.Interop.Excel.dll

Turaniano
fonte
4

Encontrei-o localizado em Assemblies-> Extensions no VS2013.

Adicionar Referência

bluebunny72
fonte
3

Se você tiver o Microsoft Office instalado, deverá ser capaz de adicionar uma referência ao Interop.Excel.

Por exemplo, o PC em que estou digitando tem MSVS 2010 C # Express e Office 2010. Posso adicionar uma referência a Microsoft.Office.Interop.Excel 11.0.0.0.

'Espero que ajude

paulsm4
fonte
3

está no componente com, denominado: "Biblioteca de objetos do Microsoft Office 14"

James Tan
fonte
1
VS2010: Adicionar uma referência COM à "Biblioteca de objetos do Microsoft Office 14" apenas adiciona uma referência a "Microsoft.Office.Core". Melhor: use a referência COM "Biblioteca de objetos do Microsoft Excel 14.0". Ele aponta diretamente para o executável do Excel instalado, mas aparecerá como uma referência para "Microsoft.Office.Core" e "Microsoft.Office.Interop.Excel". Deve ajudar se você só precisar executar e implantar em máquinas que tenham o Excel instalado.
JS
3

A melhor opção desde o Office 2007 é usar o Open XML SDK para isso. Usamos Word.Interop, mas às vezes ele para, e não é recomendado para a Microsoft, usá-lo como uma formatação de documento do lado do servidor, então o Open XML SDK permite que você crie documentos de texto nos formatos DOCX e Open XML com muita facilidade. Ele permite que você vá bem com capacidade, confiança (os arquivos, se estiverem corrompidos podem ser reconstruídos), e outras características muito finas.

JosefMadrid
fonte
2

Aqui está uma solução super sólida, você só precisa ter excell.dll na sua pasta Debug / Release O meu é de 77.824 bytes, eu baixei como um arquivo, isso também explica porque algumas pessoas têm o Debug compilado mas o Release não ou vice-versa.

Trento

Mario trento
fonte
2

Eu simplesmente tive o mesmo problema, mas nenhuma dessas respostas me ajudou. Eu encontrei a dll no meu pc no local que Mostey observou: ( C:\Windows\assembly\GAC_MSIL\Microsoft.Office.Interop.Excel\14.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Excel.dll), mas este não é o que foi referenciado no projeto que eu estava tentando construir.

A referência em nosso projeto no Visual Studio 2012 estava apontando C:\Program Files (x86)\Microsoft Visual Studio 11.0\Visual Studio Tools for Office\. Este local estava vazio para mim, mas funcionou bem para todos os outros. Foram necessárias várias tentativas, mas finalmente localizei um instalador funcionando. Espero que isso evite o mesmo aborrecimento para os outros!

-> Instalador do pacote de ferramentas de escritório para VS2012 <-

Ele estava localizado na página de download e documentação do Office . Role para baixo até Downloads de ferramentas . Também existe atualmente um para VS2013.

thehelix
fonte
1

1. Baixe e instale: Ferramentas de desenvolvedor do Microsoft Office

2. Adicionar referências de:

C: \ Arquivos de programas (x86) \ Microsoft Visual Studio 11.0 \ Visual Studio Tools for Office \ PIA \ Office15

Artur Tarnowski
fonte
1

Eu tive o mesmo problema e o Microsoft.Office.Interop não estava aparecendo na opção "Adicionar Referência" depois que atualizei o VS2012 para o VS2015. Basicamente, reparei a instalação ( Painel de Controle> Programas e Recursos> VS 2012> Clique com o botão direito em Alterar> Reparar ) e adicionei o componente Microsoft Office. Depois disso, a mesma solução começou a funcionar.

sk1900
fonte
0

Certifique-se de que seu projeto seja de 32 bits.

Tive este problema, assim que marquei "Preferir 32 bits e reconstruir" todos os assemblies de interoperabilidade do Office, quando disponíveis em Referência-> Assemblies-> Pesquisar "Office".

spludlow
fonte