728x90
※ 해당 게시글의 코드는 직접 작성한 코드가 아닙니다.
참조한 사이트는 하단에 기재하였습니다.
해당 코드로 실습 후 발견한 에러 해결 과정만 제가 작성하였으니 참고 바랍니다.
1) 실습 코드
using Microsoft.Office.Interop.Excel; //엑셀 사용을 위한 참조 추가
using System.Runtime.InteropServices; //사용할 엑셀 객체들을 해제(release)해주기 위한 참조 추가
namespace Sample
{
class Program
{
static void Main(string[] args)
{
//엑셀 사용을 위한 인스턴스 생성
Application excelApp = new Application();
//엑셀 파일 생성(워크북 생성)
Workbook wb = excelApp.Workbooks.Add();
//다른 이름으로 저장하기 d 드라이브의 workplace라는 폴더에 저장.
wb.SaveAs(Filename: @"d:\workplace\123.xlsx");
/*
- Filename 뒤에 경로와 파일이름, 확장자명 입력
- wb.Save()의 경우 현재 파일에 저장(덮어쓰기)
*/
wb.Close();
excelApp.Quit();
Marshal.ReleaseComObject(wb); //워크북 닫기(릴리즈)
Marshal.ReleaseComObject(excelApp); //엑셀 닫기(릴리즈)
/*
- 릴리즈(이중으로 닫는) 이유는
Close(), Quit()만으로 닫히지 않는(해제되지 않는) 객체들이 발생한다.
-> 백그라운드에서 실행된 객체
그래서 한 번 더 객체를 해제(Release)하는 것이다.
*/
}
}
}
Marshal 클래스
관리되지 않는 메모리를 할당, 메모리 블록 복사, 관리되는 형식을 관리되지 않는 형식으로 변환.
2) 에러 해결
1. Office에 빨간 줄
메뉴 프로젝트(Project) -> 참조 추가(Add Reference) -> COM
Microsoft Office Object Library
체크박스 표시 후 확인 버튼을 누르면 빨간 줄이 사라짐.
2. Application, new Application()에 빨간 줄
오류 메시지)
Application은 'Microsoft.Office.Interop.Excel.Application' 및 'System.Windows.Forms.Application' 사이에 모호한 참조입니다.
원인)
: 프로젝트를 생성할 때 Windows Forms 앱으로 생성해서 그런 것.
→ 엑셀 사용을 위한 참조 using Microsoft.Office.Interop.Excel; 와 폼 사용을 위한 참조 using System.Windows.Forms; 중 어디에서 Application을 사용할지 모호하기 때문.
해결 방법)
① 윈폼을 사용해야 하는 경우
수정 전)
Application excelapp = new Application();
수정 후)
Microsoft.Office.Interop.Excel.Application excelapp = new Microsoft.Office.Interop.Excel.Application();
② 윈폼을 사용할 필요 없는 경우
using System.Windows.Forms; 제거
참조 사이트)
https://hostramus.tistory.com/91
C# 엑셀(Excel) 01. C#으로 엑셀 열기, 저장, 닫기
C#으로 엑셀 열기, 저장, 닫기 1. 목표 엑셀을 사용 할 수 있도록 참조 추가 엑셀 인스턴스 생성 워크북 생성 내용 저장 ( Save(), SaveAs() ) 엑셀 프로그램 닫기 (엑셀 릴리즈) 2. 전체 코드 1 2 3 4 5 6 7 8
hostramus.tistory.com
728x90
반응형
'개발 공부 > C# 학습' 카테고리의 다른 글
[C# 학습] OleDbConnection, OleDbCommand, OleDbDataAdapter, OleDbDataReader (0) | 2022.10.24 |
---|---|
[C# 학습] .NET Framework 데이터 공급자 (0) | 2022.10.24 |
[C# 학습] SqlConnection, SqlCommand, SqlDataAdapter (0) | 2022.10.24 |
[C# 학습] 데이터베이스 엔진 인증 모드(Windows 인증 방식, SQL 인증 방식) (0) | 2022.10.24 |
[C# 학습] Microsoft.ACE.OLEDB.12.0 공급자는 로컬 컴퓨터에 등록할 수 없습니다. (오류 해결) (0) | 2022.10.24 |