푸터 콘텐츠로 바로가기
IRONXL 사용하여

Microsoft Office Interop Excel C#을 사용하여 Excel 파일 읽기: Office 없이 Excel 파일을 만드는 더 빠른 방법

Microsoft 사무실 상호 운용성 Excel C#을 사용하여 Excel 파일을 읽으려고 시도해 본 적이 있다면, 버전 불일치, COM 객체 누수, 그리고 코드를 실행하는 모든 컴퓨터에 Microsoft Office가 설치되어 있어야 한다는 엄격한 요구 사항으로 인한 불편함을 이미 알고 계실 것입니다. 이 글에서는 기존의 상호 운용성 접근 방식을 살펴보고, 그 한계점을 설명한 다음, IronXL 사용하여 이러한 문제점 없이 Excel 파일을 생성 , 읽기 및 쓰는 방법을 보여드리겠습니다.

!{--010011000100100101000010010100100100000101010010010110010101111101000111010001010101010001011111010100110101010001000001010101001001010100010001011111010101110100100 10101010001001000001011111010100000101001001001111010001000101010101000011010101000101111101010001010010010010010010010100000101001100010111110100001001001100010011110100001101001011--}

Interop 라이브러리는 어떻게 Excel 통합 문서를 생성합니까?

Microsoft.Office.Interop.Excel 네임스페이스는 Excel이 내부적으로 사용하는 것과 동일한 COM 개체 모델을 노출합니다. 이 상호 운용 라이브러리를 통해 Excel 파일을 읽거나 생성하려면 먼저 Application 객체를 인스턴스화하고, Workbooks 컬렉션에 새 통합 문서를 추가한 다음, 개별 워크시트 셀에 액세스해야 합니다. 다음 예제는 Microsoft.Office.Interop.Excel을 사용하여 XLSX 파일을 생성하고 셀에 값을 쓰는 최소한의 콘솔 애플리케이션을 보여줍니다.

using Excel = Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;
// Create the Excel Application COM object
Excel.Application excelApp = new Excel.Application();
if (excelApp == null)
{
    Console.WriteLine("Error: Excel is not properly installed.");
    return;
}
// Add a new workbook and access the default worksheet
Excel.Workbook xlWorkBook = excelApp.Workbooks.Add(Type.Missing);
Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.ActiveSheet;
// Write data into specific cells
xlWorkSheet.Cells[1, 1] = "Product";
xlWorkSheet.Cells[1, 2] = "Price";
xlWorkSheet.Cells[2, 1] = "Widget";
xlWorkSheet.Cells[2, 2] = "29.99";
// Save as an XLSX file and clean up COM objects
string filepath = @"C:\Reports\products.xlsx";
xlWorkBook.SaveAs(filepath);
xlWorkBook.Close(false);
excelApp.Quit();
// Release every COM object to prevent orphaned Excel processes
Marshal.ReleaseComObject(xlWorkSheet);
Marshal.ReleaseComObject(xlWorkBook);
Marshal.ReleaseComObject(excelApp);
using Excel = Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;
// Create the Excel Application COM object
Excel.Application excelApp = new Excel.Application();
if (excelApp == null)
{
    Console.WriteLine("Error: Excel is not properly installed.");
    return;
}
// Add a new workbook and access the default worksheet
Excel.Workbook xlWorkBook = excelApp.Workbooks.Add(Type.Missing);
Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.ActiveSheet;
// Write data into specific cells
xlWorkSheet.Cells[1, 1] = "Product";
xlWorkSheet.Cells[1, 2] = "Price";
xlWorkSheet.Cells[2, 1] = "Widget";
xlWorkSheet.Cells[2, 2] = "29.99";
// Save as an XLSX file and clean up COM objects
string filepath = @"C:\Reports\products.xlsx";
xlWorkBook.SaveAs(filepath);
xlWorkBook.Close(false);
excelApp.Quit();
// Release every COM object to prevent orphaned Excel processes
Marshal.ReleaseComObject(xlWorkSheet);
Marshal.ReleaseComObject(xlWorkBook);
Marshal.ReleaseComObject(excelApp);
Imports Excel = Microsoft.Office.Interop.Excel
Imports System.Runtime.InteropServices

' Create the Excel Application COM object
Dim excelApp As Excel.Application = New Excel.Application()
If excelApp Is Nothing Then
    Console.WriteLine("Error: Excel is not properly installed.")
    Return
End If

' Add a new workbook and access the default worksheet
Dim xlWorkBook As Excel.Workbook = excelApp.Workbooks.Add(Type.Missing)
Dim xlWorkSheet As Excel.Worksheet = CType(xlWorkBook.ActiveSheet, Excel.Worksheet)

' Write data into specific cells
xlWorkSheet.Cells(1, 1) = "Product"
xlWorkSheet.Cells(1, 2) = "Price"
xlWorkSheet.Cells(2, 1) = "Widget"
xlWorkSheet.Cells(2, 2) = "29.99"

' Save as an XLSX file and clean up COM objects
Dim filepath As String = "C:\Reports\products.xlsx"
xlWorkBook.SaveAs(filepath)
xlWorkBook.Close(False)
excelApp.Quit()

' Release every COM object to prevent orphaned Excel processes
Marshal.ReleaseComObject(xlWorkSheet)
Marshal.ReleaseComObject(xlWorkBook)
Marshal.ReleaseComObject(excelApp)
$vbLabelText   $csharpLabel

위 코드는 Excel 통합 문서를 생성하고 , 워크시트에 행과 셀 값을 채우고, 파일을 저장한 다음, 각 COM 개체를 수동으로 해제합니다. 마지막 정리 작업은 선택 사항이 아닙니다. 이 단계를 건너뛰면 시스템 메모리를 차지하는 유령 EXCEL.EXE 프로세스가 남아 있게 됩니다. 또한 코드가 Application 객체가 null인지 여부를 확인하는 것을 확인하십시오. Microsoft Office가 설치되어 있지 않으면 그 이후의 모든 줄에서 오류가 발생합니다. Office 상호 운용 라이브러리의 버전은 컴퓨터에 설치된 Office 버전과 일치해야 합니다. 그렇지 않으면 디버깅하기 매우 어려운 FileNotFoundException 및 이와 유사한 런타임 오류가 발생합니다.

Visual Basic 개발자는 Excel Microsoft.Office.Interop.Excel을 사용할 때 동일한 문제에 직면합니다. 이는 기본 COM 인프라가 모든 .NET 언어에서 동일하기 때문입니다.

상호 운용성 접근 방식은 서버와 클라우드에 어떤 문제를 야기합니까?

마이크로소프트는 서버 환경에서 사무실 상호 운용성 사용을 명시적으로 권장하지 않습니다. 상호 운용성 라이브러리는 백그라운드에서 Excel 애플리케이션의 전체 인스턴스를 실행합니다. 즉, 웹 서버나 클라우드 앱에 대한 모든 요청은 숨겨진 Windows 데스크톱 프로세스를 실행합니다. 리눅스 서버에서는 전혀 작동하지 않습니다. Office가 설치되어 있지 않거나 서로 다른 버전의 Microsoft Office가 충돌하는 경우 데이터베이스 연결 문자열, 파일 시스템 경로 및 사용자 권한은 모두 추가적인 오류 발생 지점이 됩니다.

개발자들은 엑셀이 설치되어 있지 않아도 엑셀 파일을 읽고 만드는 방법을 찾으면서 스택 오버플로우마이크로소프트 Q&A 에 이러한 문제에 대한 글을 자주 올립니다. 아래 표는 주요 차이점을 요약한 것입니다.

|기능| 사무실 상호 운용성 |IronXL| |---|---|---| | Excel이 설치되어 있어야 합니다. | 예, 개발자 컴퓨터와 모든 프로덕션 서버에만 해당됩니다. | 아니요 | | 지원되는 Excel 파일 형식 | XLS, XLSX| XLS, XLSX, CSV, TSV, JSON, XML| | 크로스 플랫폼(.NET Core, Linux, macOS) |Windows 전용| 윈도우, 리눅스, macOS, Azure | | COM 객체 정리 필요 | 예 — 수동 Marshal.ReleaseComObject | 아니요 | | 서버/클라우드 배포 | 마이크로소프트에서 권장하지 않습니다. |완전히 지원| |성능| 속도가 느림 — 숨겨진 Excel 프로세스를 실행합니다. | 성능 향상 — 관리형 .NET 코드 | | .NET Framework 및 .NET Core 지원 | .NET Framework 만 해당 | .NET Framework, .NET Core, .NET 5~10 |

Microsoft Office가 설치되어 있지 않은 상태에서 Excel 파일을 만드는 방법은 무엇인가요?

IronXL 은 .NET Excel 라이브러리 로, 모든 작업을 관리 코드로 처리하여 Excel 파일을 읽고 쓰고 생성합니다. Microsoft Office에 대한 의존성이 없으며, 릴리스해야 할 COM 개체도 없고, 디버깅해야 할 버전 충돌도 없습니다. Visual Studio의 솔루션 탐색기에서 NuGet 통해IronXL검색하여 설치하면 바로 사용할 수 있습니다. 이 라이브러리는 .NET Framework 4.6.2 이상, .NET Core, 그리고 .NET 5부터 .NET 10까지의 모든 주요 운영 체제에서 정상적으로 작동합니다.

using IronXL;
// Create a new Excel workbook — default value is XLSX format
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add a worksheet and populate cells with data
WorkSheet workSheet = workBook.CreateWorkSheet("Sales");
workSheet["A1"].Value = "Product";
workSheet["B1"].Value = "Price";
workSheet["A2"].Value = "Widget";
workSheet["B2"].Value = 29.99;
// Apply basic formatting
workSheet["A1"].Style.Font.Bold = true;
workSheet["B1"].Style.Font.Bold = true;
// Save the XLSX file
workBook.SaveAs(@"C:\Reports\products.xlsx");
using IronXL;
// Create a new Excel workbook — default value is XLSX format
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add a worksheet and populate cells with data
WorkSheet workSheet = workBook.CreateWorkSheet("Sales");
workSheet["A1"].Value = "Product";
workSheet["B1"].Value = "Price";
workSheet["A2"].Value = "Widget";
workSheet["B2"].Value = 29.99;
// Apply basic formatting
workSheet["A1"].Style.Font.Bold = true;
workSheet["B1"].Style.Font.Bold = true;
// Save the XLSX file
workBook.SaveAs(@"C:\Reports\products.xlsx");
Imports IronXL

' Create a new Excel workbook — default value is XLSX format
Dim workBook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
' Add a worksheet and populate cells with data
Dim workSheet As WorkSheet = workBook.CreateWorkSheet("Sales")
workSheet("A1").Value = "Product"
workSheet("B1").Value = "Price"
workSheet("A2").Value = "Widget"
workSheet("B2").Value = 29.99
' Apply basic formatting
workSheet("A1").Style.Font.Bold = True
workSheet("B1").Style.Font.Bold = True
' Save the XLSX file
workBook.SaveAs("C:\Reports\products.xlsx")
$vbLabelText   $csharpLabel

IronXL로 생성된 Excel 파일

Microsoft 사무실 상호 운용성 Excel C#을 사용하여 Excel 파일 읽기: Office 없이 Excel 파일을 만드는 더 빠른 방법: 이미지 1 -IronXL출력 파일

위 코드는 Interop 예제와 동일한 결과를 얻지만, 코드 줄 수는 절반이고 외부 종속성도 전혀 없습니다. WorkBook.Create() 메서드는 지정된 Excel 파일 형식 (기본값은 XLSX)으로 새 통합 문서를 초기화하고, CreateWorkSheet 메서드는 이름이 지정된 워크시트를 추가합니다. 셀 값은 깔끔한 인덱서 구문을 통해 설정되며, SaveAs 기능은 파일 확장자를 자동으로 처리합니다. Quit()도, Marshal.ReleaseComObject도, 숨겨진 프로세스도 없습니다. 동일한 API를 사용하여 단일 메서드 호출로 XLS, CSV, JSON 또는 XML 형식으로 저장할 수도 있습니다. 사용 가능한 모든 옵션은 내보내기 문서를 참조하십시오.

IronXL System.Data 개체와도 깔끔하게 통합되므로 데이터베이스 연결 문자열에서 DataTable을 통해 흐르는 데이터를 수동으로 행별로 반복하지 않고도 워크시트에 직접 쓸 수 있습니다.

워크시트의 데이터를 행과 셀 간에 읽고 쓰는 방법은 무엇인가요?

기존 엑셀 파일을 읽는 것도 마찬가지로 간단합니다. WorkBook.Load 메서드는 XLS, XLSX또는 CSV 파일의 문자열 파일 경로를 인수로 받습니다. 이 경로를 통해 각 워크시트는 행과 셀을 반복 가능한 컬렉션으로 제공하므로 데이터를 쉽게 읽고, 값을 수정하고, 결과를 데이터베이스 또는 서버 엔드포인트에 업로드할 수 있습니다.

using IronXL;
// Load an existing Excel file
WorkBook workBook = WorkBook.Load(@"C:\Reports\products.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;
// Read and display each row of data
foreach (var row in workSheet.Rows)
{
    foreach (var cell in row.ToArray())
    {
        Console.Write(cell.Value + "\t");
    }
    Console.WriteLine();
}
// Update a specific cell and save
workSheet["B2"].Value = 34.99;
workBook.SaveAs(@"C:\Reports\products_updated.xlsx");
using IronXL;
// Load an existing Excel file
WorkBook workBook = WorkBook.Load(@"C:\Reports\products.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;
// Read and display each row of data
foreach (var row in workSheet.Rows)
{
    foreach (var cell in row.ToArray())
    {
        Console.Write(cell.Value + "\t");
    }
    Console.WriteLine();
}
// Update a specific cell and save
workSheet["B2"].Value = 34.99;
workBook.SaveAs(@"C:\Reports\products_updated.xlsx");
Imports IronXL

' Load an existing Excel file
Dim workBook As WorkBook = WorkBook.Load("C:\Reports\products.xlsx")
Dim workSheet As WorkSheet = workBook.DefaultWorkSheet

' Read and display each row of data
For Each row In workSheet.Rows
    For Each cell In row.ToArray()
        Console.Write(cell.Value & vbTab)
    Next
    Console.WriteLine()
Next

' Update a specific cell and save
workSheet("B2").Value = 34.99
workBook.SaveAs("C:\Reports\products_updated.xlsx")
$vbLabelText   $csharpLabel

IronXL사용하여 Excel 파일 읽기

Microsoft 사무실 상호 운용성 Excel C#을 사용하여 Excel 파일 읽기: Office 없이 Excel 파일을 만드는 더 빠른 방법: 이미지 2 - IronXL로 엑셀 파일 출력 읽기

이 예제는 행(Rows) 컬렉션을 반복하고 각 셀의 값(Value) 속성에 접근하여 Excel 파일을 읽는 방법을 보여줍니다. var row 다음에 var cell이 오는 중첩 루프 패턴은 스프레드시트를 자연스럽게 생각하는 방식과 유사합니다. 데이터를 읽은 후, 코드는 단일 셀을 업데이트하고 원본 파일을 보존하면서 통합 문서를 새 XLSX 파일로 저장합니다.IronXL시트가 수정될 때 모든 Excel 수식을 자동으로 다시 계산합니다. 이는 상호 운용 라이브러리에서도 제공하는 기능이지만, 해당 라이브러리는 전체 Excel 인스턴스를 실행해야 하는 단점이 있습니다.

수식, 조건부 서식, 셀 병합 또는 여러 시트 작업과 같은 고급 시나리오의 경우 IronXL API 참조에서 사용 가능한 모든 메서드와 속성을 확인할 수 있습니다. 이 라이브러리는 ASP.NET 컨트롤러에서의 접근도 지원하므로 서버에 Office가 설치되어 있지 않아도 웹 앱이나 API 엔드포인트에서 Excel 파일을 간편하게 생성하고 다운로드할 수 있습니다.

.NET Excel 자동화를 위한 최선의 방향은 무엇일까요?

프로젝트가 Microsoft Office가 이미 설치되어 있고 동일한 버전이 안정적으로 유지되는 기존 Windows 데스크톱 환경에 고정되어 있는 경우, 상호 운용 라이브러리는 기본적인 작업에는 문제없이 작동할 수 있습니다. 하지만 서버 배포, 클라우드 앱, 크로스 플랫폼 빌드 또는 더 나은 성능과 더 적은 런타임 오류가 필요한 모든 시나리오에서는 독립형 .NET Excel 라이브러리가 확실한 선택입니다.

IronXL .NET 이 실행되는 모든 곳에서 작동하는 깔끔하고 현대적인 API를 통해 모든 일반적인 Excel 작업( 워크북 생성 , Excel 스프레드시트 데이터 읽기 , 셀에 쓰기, XLS 및 XLSX를 포함한 다양한 파일 확장자 형식 으로 저장)을 처리합니다. 이 소프트웨어는 C# 및 Visual Basic 프로젝트를 모두 지원하며, 수정 없이 동일한 코드가 Windows, Linux 및 macOS에서 작동합니다.

30일 무료 평가판을 시작하여 프로젝트에서 직접 테스트해 보거나, 배포 준비가 되면 라이선스 옵션을 살펴보세요 .

자주 묻는 질문

C#에서 Microsoft Office Interop Excel을 사용할 때의 한계는 무엇인가요?

C#에서 Microsoft Office Interop Excel을 사용하면 버전 불일치, COM 개체 유출, 코드를 실행하는 모든 컴퓨터에 Microsoft Office를 설치해야 하는 등의 문제가 발생할 수 있습니다.

IronXL은 C#에서 Excel 파일을 처리하는 프로세스를 어떻게 개선하나요?

IronXL을 사용하면 Microsoft Office 없이도 Excel 파일을 만들고, 읽고, 쓸 수 있으므로 버전 불일치 및 COM 개체 유출과 같은 문제를 해결할 수 있습니다.

Microsoft Office가 설치되지 않은 서버에서 IronXL을 사용할 수 있나요?

예, IronXL은 서버에 안전하며 Microsoft Office를 설치할 필요가 없으므로 Excel 파일을 처리할 수 있는 크로스 플랫폼 솔루션입니다.

IronXL Excel Interop 대신 사용할 때의 이점은 무엇입니까?

IronXL은 Microsoft Office에 의존하지 않으므로 버전 불일치 및 COM 개체 유출과 같은 일반적인 문제의 위험을 줄이면서 Excel 파일을 보다 안정적이고 효율적으로 처리할 수 있는 방법을 제공합니다.

IronXL은 모든 버전의 Excel 파일과 호환되나요?

IronXL은 XLSX, XLS, CSV, TSV를 비롯한 다양한 Excel 파일 형식을 지원하므로 다양한 Excel 파일 작업에 활용할 수 있습니다.

IronXL을 컴퓨터에서 작동하려면 특별한 설정이 필요하나요?

IronXL은 Microsoft Office 설치가 필요하지 않으며 특별한 설정 없이도 C# 프로젝트에 쉽게 통합할 수 있습니다.

IronXL 대용량 Excel 파일을 효율적으로 처리할 수 있습니까?

예, IronXL은 대용량 Excel 파일을 효율적으로 읽고 쓸 수 있도록 설계되어 Interop의 제한 없이 빠른 성능을 제공합니다.

IronXL 어떤 플랫폼을 지원하나요?

IronXL은 Windows, Linux, MacOS를 지원하는 크로스 플랫폼이므로 다양한 환경에서 Excel 파일을 유연하게 조작할 수 있습니다.

IronXL은 Excel 파일 생성을 어떻게 처리하나요?

IronXL은 C#에서 프로그래밍 방식으로 Excel 파일을 만들 수 있는 간단한 API를 제공하여 셀 서식 지정, 워크시트 관리 등의 기능을 제공합니다.

IronXL 사용자를 위한 커뮤니티나 지원이 있나요?

예. IronXL 사용자는 문서, 튜토리얼 및 커뮤니티 지원을 통해 통합 또는 사용 관련 질문에 대한 도움을 받을 수 있습니다.

커티스 차우
기술 문서 작성자

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다.

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해