스택큐힙리스트

마이크로소프트 오피스를 설치하지 않고 C#에서 Excel(.XLS와 .XLSX) 파일을 생성하는 방법은 무엇인가요? 본문

카테고리 없음

마이크로소프트 오피스를 설치하지 않고 C#에서 Excel(.XLS와 .XLSX) 파일을 생성하는 방법은 무엇인가요?

스택큐힙리스트 2023. 3. 25. 07:18
반응형

코드를 실행하는 기계에 Excel이 설치되어 있지 않아도 C#으로 Excel 스프레드시트를 어떻게 생성할 수 있나요?

답변 1

ExcelLibrary라는 라이브러리를 사용할 수 있습니다. Google Code에 게시된 무료 및 오픈 소스 라이브러리입니다.

ExcelLibrary

이것은 위에서 언급한 PHP ExcelWriter의 포트로 보입니다. 아직 새로운 .xlsx 형식으로 작성하지는 않지만, 해당 기능을 추가하는 작업을 하고 있습니다.

이것은 매우 간단하며 작고 사용하기 쉽습니다. 또한 DataSetHelper가 있어 DataSets 및 DataTables를 사용하여 Excel 데이터를 쉽게 처리할 수 있습니다.

ExcelLibrary는 여전히 구식 Excel 형식 (.xls 파일)에서만 작동하는 것 같지만, 미래에는 더 최신인 2007/2010 형식을 지원할 수도 있습니다.

당신은 또한 엑셀 2007/2010 형식 파일 (.xlsx 파일)에만 작동하는 EPPlus을 사용할 수 있습니다. 또한 양쪽에서 작동하는 NPOI도 있습니다.

각 라이브러리에는 댓글에 나와 있듯이 알려져 있는 버그가 몇 가지 있습니다. 모두 가지고 있는 시간에, EPPlus는 계속해서 최선의 선택인 것 같습니다. 업데이트와 문서화가 더 활발하게 이루어지고 있습니다.

또한, 아래의 @АртёмЦари온노프의 언급대로 EPPlus는 피벗 테이블을 지원하며 ExcelLibrary는 일부 지원을 할 수 있습니다 ( Pivot table issue in ExcelLibrary )

여기에 빠른 참고용 링크 몇 개가 있습니다:

번역할 수 없는 문자열입니다.

EPPlus - GNU (LGPL) - No longer maintained

해석할 수 없는 문자열입니다.

NPOI - Apache License

ExcelLibrary에 대한 몇 가지 예제 코드가 여기에 있습니다.

이것은 데이터베이스에서 데이터를 가져 와서 워크북을 만드는 예제입니다. ExcelLibrary 코드는 바닥에 단일 라인임을 유의하십시오.

//Create the data set and table

DataSet ds = new DataSet(New_DataSet);

DataTable dt = new DataTable(New_DataTable);

//Set the locale for each

ds.Locale = System.Threading.Thread.CurrentThread.CurrentCulture;

dt.Locale = System.Threading.Thread.CurrentThread.CurrentCulture;

//Open a DB connection (in this example with OleDB)

OleDbConnection con = new OleDbConnection(dbConnectionString);

con.Open();

//Create a query and fill the data table with the data from the DB

string sql = SELECT Whatever FROM MyDBTable;;

OleDbCommand cmd = new OleDbCommand(sql, con);

OleDbDataAdapter adptr = new OleDbDataAdapter();

adptr.SelectCommand = cmd;

adptr.Fill(dt);

con.Close();

//Add the table to the data set

ds.Tables.Add(dt);

//Here's the easy part. Create the Excel worksheet from the data set

ExcelLibrary.DataSetHelper.CreateWorkbook(MyExcelFile.xls, ds);

엑셀 파일을 만드는 것은 그렇게 어렵지 않습니다. 수동으로 엑셀 파일을 만들 수도 있지만, 위의 기능이 정말 인상적인 것입니다.

답변 2

C#에서 Microsoft Office를 설치하지 않고 Excel (.XLS 및 .XLSX) 파일을 생성하는 방법은 무엇일까요?

C#은 마이크로소프트 공식 코딩 언어 중 하나로서, .NET Framework에서 지원됩니다. C#에서 Microsoft Office를 설치하지 않고 Excel (.XLS 및 .XLSX) 파일을 생성하는 방법은 매우 중요합니다. 이 글에서는 이러한 방법에 대해 자세히 설명하겠습니다.

많은 프로젝트에서 Excel 파일 생성이 필요합니다. 그러나 Microsoft Office를 설치하지 않은 경우, Excel 파일을 생성하는 것은 까다로운 일입니다. 이 경우, OpenXML 라이브러리를 사용하여 Excel 파일을 생성할 수 있습니다. OpenXML 라이브러리는 Microsoft에서 개발한 라이브러리로, Office 파일 형식을 쉽게 다룰 수 있도록 도와줍니다.

1. 네임스페이스 추가

OpenXML 라이브러리를 사용하기 위해 사용할 네임스페이스를 추가해야합니다.

using DocumentFormat.OpenXml;

using DocumentFormat.OpenXml.Packaging;

using DocumentFormat.OpenXml.Spreadsheet;

2. Excel 파일 생성

이제 Excel 파일을 만들어보겠습니다. 다음 코드를 사용하여 Excel 파일을 생성할 수 있습니다.

public static void CreateExcelFile(string directoryPath, string fileName)

{

SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(directoryPath + \\ + fileName, SpreadsheetDocumentType.Workbook);

WorkbookPart workbookPart = spreadsheetDocument.AddWorkbookPart();

workbookPart.Workbook = new Workbook();

WorksheetPart worksheetPart = workbookPart.AddNewPart();

worksheetPart.Worksheet = new Worksheet();

SheetData sheetData = new SheetData();

worksheetPart.Worksheet.AppendChild(sheetData);

Sheets sheets = spreadsheetDocument.WorkbookPart.Workbook.AppendChild(new Sheets());

Sheet sheet = new Sheet() { Id = spreadsheetDocument.WorkbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name = Sheet1 };

sheets.Append(sheet);

workbookPart.Workbook.Save();

spreadsheetDocument.Close();

}

위 코드에서 CreateExcelFile(string directoryPath, string fileName) 메서드는 폴더 경로와 파일 이름을 매개 변수로 받아 Excel 파일을 생성합니다. CreateExcelFile 메서드는 다음과 같은 작업을 수행합니다.

- Excel 파일 생성

- WorkbookPart와 WorksheetPart 추가

- Worksheet 및 SheetData 추가

- Sheets 및 Sheet 추가

- Workbook 저장

- SpreadsheetDocument 닫기

이제 C#에서 Microsoft Office를 설치하지 않고 Excel (.XLS 및 .XLSX) 파일을 생성할 수 있습니다. OpenXML 라이브러리를 사용하면 Microsoft Office의 제한된 기능이 없는 Excel 파일 생성을 가능하게 합니다.

반응형
Comments