비주얼 스튜디오 C#에서 오피스를 사용하는 방법?
Visual Studio에서 Office의 COM 인터럽에 대한 참조를 추가하는 방법은 다음과 같습니다.
- 참고문헌
- 참조 추가
- COM 탭 선택
- Microsoft Office 11.0 개체 라이브러리 선택
마법처럼 이름 붙여진 참조가 나타납니다.
Microsoft.Office.Core
Project.csproj
은. file은의을다다을의e은es: .
<COMReference Include="Microsoft.Office.Core">
<Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid>
<VersionMajor>2</VersionMajor>
<VersionMinor>3</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>primary</WrapperTool>
<Isolated>False</Isolated>
</COMReference>
그리고 프로젝트는 소스 제어로 체크되어 모든 것이 잘 되어 있습니다.
그러면 Office 2007을 사용하는 개발자는 소스 제어에서 프로젝트를 가져오는데 그러한 참조가 존재하지 않기 때문에 프로젝트를 빌드할 수 없습니다.
그(즉, 나)는 .csproj 파일을 체크아웃하고, 참조를 삭제합니다.
Microsoft Office 11.0 Object Library
COM 참조를 다음과 같이 다시 추가합니다.
Microsoft Office 12.0 Object Library
마법처럼 명명된 참조가 나타납니다.
Microsoft.Office.Core
Project.csproj
은. file은의을다다을의e은es: .
<COMReference Include="Microsoft.Office.Core">
<Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid>
<VersionMajor>2</VersionMajor>
<VersionMinor>4</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>primary</WrapperTool>
<Isolated>False</Isolated>
</COMReference>
그리고 프로젝트는 소스 제어로 체크되어 모든 것이 잘 되어 있습니다.
그런 다음 Office 2003을 사용하는 개발자는 소스 제어에서 프로젝트를 가져오는데 그러한 참조가 존재하지 않기 때문에 프로젝트를 빌드할 수 없습니다.
그는 (내가 아닌) .csproj 파일을 체크아웃하고 참조를 삭제합니다.
Microsoft Office 12.0 Object Library
COM 참조를 다음과 같이 다시 추가합니다.
Microsoft Office 11.0 Object Library
마법처럼 명명된 참조가 나타납니다.
Microsoft.Office.Core
Project.csproj
은. file은의을다다을의e은es: .
<COMReference Include="Microsoft.Office.Core">
<Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid>
<VersionMajor>2</VersionMajor>
<VersionMinor>3</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>primary</WrapperTool>
<Isolated>False</Isolated>
</COMReference>
그리고 프로젝트는 소스 제어로 체크되어 모든 것이 잘 되어 있습니다.
그런 다음 프로젝트를 빌드하고 CD에 눌러 Office 2007을 사용하는 고객에게 보냅니다.
그리고 모든 것이 좋지 않습니다.
옛날에 (예전에).NET dll hell), 버전에 독립적인 ProgID를 사용하여 Office 개체를 참조합니다.
"Excel.Application"
예를 들어 설치된 Office의 Clsid로 해결됩니다.
{00024500-0000-0000-C000-000000000046}
클래스는 COM(language-netural pseudo-code)에 대한 호출을 사용하여 구성됩니다.
public IUnknown CreateOleObject(string className)
{
IUnknown unk;
Clsid classID = ProgIDToClassID(className);
CoCreateInstance(classID, null,
CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER,
IUnknown, out unk);
return unk;
}
문의사항
1) 설치된 Office 애플리케이션을 자동화하기 위해 승인된 기술은 무엇입니까?
2) Office 2003 Primary Interop Assembly는 어떤 용도로 유용합니까?
3) Office 2003 Primary Interop Assembly를 사용할 경우 Office 2003을 설치해야 합니까?
4) Office 2003 Primary Interop Assembly로 구축하면 고객이 Office 20003에 영원히 묶여 있습니까?
5) Office 2007 Primary Interop Assembly가 있습니까?
6) Office 2007 Primary Interop Assembly를 설치할 경우 Office 2007을 설치해야 합니까?
7) Excel, Word 또는 Outlook을 구동하기 위해 표준 COM interop을 사용하는 것에 문제가 있습니까? 예:
[ComImport]
[Guid("00024500-0000-0000-C000-000000000046")]
public class Excel
{
}
8) 다음을 추가할 때 달성하는 것은 무엇입니까?
- COM 탭의 항목에 대한 참조,
- [ComImport]를 사용하는 것과는 반대로,
- Office 2007 Primary Interop Assembly를 사용하는 것과 반대로?
9) COM 탭을 사용하여 참조를 추가하는 것은 COM interop을 사용하는 것과 동일하나요?
10) Office 2003 Primary Interop Assembly는 다음과 호환됩니까? - Office 14 - Office 2007 - Office 2003 - Office XP - Office 2000 - Office 97 - Office 95
고객과 개발자가 새로운 버전의 Office를 설치해도 계속 작동합니까?
11) Office 2003 Primary Interop Assembly를 애플리케이션과 함께 발송해야 합니까?
12) 고객이 애플리케이션을 사용하기 전에 Office 2003 Primary Interop Assembly를 설치해야 합니까?
13) 고객이 Office 2003 Primary Interop Assembly를 설치할 경우 Office를 설치해야 합니까?
14) 고객이 Office 2003 Primary Interop Assembly를 설치할 경우 Office 2003을 설치해야 합니까?
15) Office 2003 Primary Interop Assembles는 무료, 라이트, 재배포 가능 버전의 Office 2003입니까?
16) 개발 기계에 Office 2007이 있는 경우 Office 2003 PIA를 사용하고 Office XP가 설치된 고객에게 배송할 수 있습니까?
질문이 엄청 많네요.일반적으로 앱에서 PIA를 사용하고 있다면 대상 사용자에게 Office 버전이 설치되어 있다고 가정하는 것입니다.PIA는 대상 사용자가 Office를 설치할 때 GAC에 설치됩니다.만약 그들이 Office를 설치하지 않았다면 왜 Office를 목표로 하고 있습니까?
네, Office dlls가 Office를 자동화하는 올바른 방법입니다.여기에 오피스 2007용을 포함한 조립품 목록이 있습니다.
인터럽트를 위해 얻는 어셈블리 dll이 무엇이든 "로컬 복사"가 정답입니다.출력 폴더에 어셈블리 dll이 있으면 참조를 추가하고 소스 컨트롤로 검사합니다.
이제 모든 사용자는 참조된 어셈블리 dll을 가집니다.
VSTO(Visual Studio Tool for Office)를 사용하십니까?
http://msdn.microsoft.com/en-us/office/aa905533.aspx
오래된 쓰레드라면 대부분의 사람들이 CopyLocal=에 만족할 것입니다.맞아요, 하지만 다른 방법이 있습니다.둘 다 사용(또는 그 이상)? 문제가 여전히 존재한다면 오피스 2010을 생각합니다.프로젝트 파일의 참조를 무시하거나 MSBuild에 "MSB3284" 경고를 무시하라고 지시합니다(라이브러리를 찾을 수 없음).따라서 이 내용을 .csproj 파일에 포함시키십시오.
<COMReference Include="Microsoft.Office.Core">
<Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid>
<VersionMajor>2</VersionMajor>
<VersionMinor>3</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>primary</WrapperTool>
<Isolated>False</Isolated>
</COMReference>
다음은 다음과 같습니다.
<COMReference Include="Microsoft.Office.Core">
<Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid>
<VersionMajor>2</VersionMajor>
<VersionMinor>4</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>primary</WrapperTool>
<Isolated>False</Isolated>
</COMReference>
마이크로소프트사가 이를 위한 NuGet 라이브러리를 제공하는지 알고 싶습니다. 단지 모든 사람이 동일한 접근 방식을 사용할 수 있도록 하기 위해서입니다.그렇게 되면 사람들이 이런 답을 찾기 위해 인터넷을 검색할 필요가 없어질 것이라고 생각합니다.저는 이것이 마이크로소프트 오피스 라이선스에 위배된다고 생각하기 때문에 그들만이 공급할 수 있습니다.
그건 그렇고 로컬 복사의 경우 실수로 이 라이브러리를 재배포하지 않도록 주의해야 합니다.
언급URL : https://stackoverflow.com/questions/401637/how-to-use-office-from-visual-studio-c
'programing' 카테고리의 다른 글
옵션 지시문에 의해 디렉터리 인덱스가 금지됨 (0) | 2023.09.12 |
---|---|
컨스트럭터 기능이 약속을 반환하도록 하는 것은 나쁜 관행입니까? (0) | 2023.09.12 |
프로그래밍 방식으로 버튼 틴트를 추가하는 방법 (0) | 2023.09.12 |
CSS와 SCSS의 차이점은 무엇입니까? (0) | 2023.09.07 |
ajax 호출 시 마우스 포인터 변경 (0) | 2023.09.07 |