๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

C#

c# Excel์ฝ๊ธฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ •๋ฆฌ

๋ฐ˜์‘ํ˜•

๐Ÿ“Œ 1. EPPlus
์ง€์› ํŒŒ์ผ ํ˜•์‹: .xlsx (Excel 2007 ์ด์ƒ)

์žฅ์ 

  • ์˜คํ”ˆ์†Œ์Šค์ด๋ฉฐ, ์‚ฌ์šฉ์ด ๊ฐ„๋‹จํ•จ
  • .NET Core ๋ฐ .NET Framework ๋ชจ๋‘ ์ง€์›
  • ์ข…์†์„ฑ์ด ๊ฑฐ์˜ ์—†์Œ

๋‹จ์ 

  • .xls ํ˜•์‹(Excel 2003 ์ด์ „)์€ ์ง€์›ํ•˜์ง€ ์•Š์Œ
  • ์„ค์น˜ (NuGet):
Install-Package EPPlus

using OfficeOpenXml;

using (var package = new ExcelPackage(new FileInfo("sample.xlsx")))
{
    var worksheet = package.Workbook.Worksheets[0];
    var value = worksheet.Cells[1, 1].Text;
    Console.WriteLine(value);
}


๐Ÿ“Œ 2. ClosedXML
์ง€์› ํŒŒ์ผ ํ˜•์‹: .xlsx

์žฅ์ 

  • Linq ๋ฐฉ์‹์œผ๋กœ ํŽธํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ฐ€๋Šฅ
  • Excel ํ…Œ์ด๋ธ”/์Šคํƒ€์ผ ๋“ฑ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ ์ง€์›

๋‹จ์ 

  • ๋Œ€์šฉ๋Ÿ‰ ์ฒ˜๋ฆฌ์‹œ ๋А๋ฆด ์ˆ˜ ์žˆ์Œ
Install-Package ClosedXML
using ClosedXML.Excel;

using (var workbook = new XLWorkbook("sample.xlsx"))
{
    var worksheet = workbook.Worksheet(1);
    var value = worksheet.Cell("A1").Value.ToString();
    Console.WriteLine(value);
}


๐Ÿ“Œ 3. NPOI
์ง€์› ํŒŒ์ผ ํ˜•์‹: .xls, .xlsx ๋ชจ๋‘ ์ง€์›

์žฅ์ 

  • Excel 2003~์ตœ์‹ ๋ฒ„์ „๊นŒ์ง€ ํญ๋„“๊ฒŒ ์ง€์›
  • Apache POI(Java)์˜ C# ํฌํŒ… ๋ฒ„์ „


๋‹จ์ 

  • ๋ฌธ๋ฒ•์ด ๋‹ค์†Œ ๋ณต์žกํ•  ์ˆ˜ ์žˆ์Œ
Install-Package NPOI
using NPOI.XSSF.UserModel; // .xlsx
using NPOI.SS.UserModel;

using (var file = new FileStream("sample.xlsx", FileMode.Open, FileAccess.Read))
{
    XSSFWorkbook workbook = new XSSFWorkbook(file);
    ISheet sheet = workbook.GetSheetAt(0);
    var value = sheet.GetRow(0).GetCell(0).ToString();
    Console.WriteLine(value);
}


๐Ÿ“Œ 4. ExcelDataReader
์šฉ๋„: ๋น ๋ฅด๊ณ  ๊ฐ€๋ฒผ์šด Excel ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ ์ „์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
์ง€์› ํฌ๋งท: .xls, .xlsx

์žฅ์ 

  • ๋งค์šฐ ๋น ๋ฆ„ (๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ์— ์ ํ•ฉ)
  • DataTable ๋˜๋Š” IEnumerable๋กœ ๋ณ€ํ™˜ ๊ฐ€๋Šฅ


๋‹จ์ 

  • ์“ฐ๊ธฐ ๊ธฐ๋Šฅ์€ ์—†์Œ
Install-Package ExcelDataReader
Install-Package ExcelDataReader.DataSet
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
using (var stream = File.Open("sample.xlsx", FileMode.Open, FileAccess.Read))
{
    using (var reader = ExcelReaderFactory.CreateReader(stream))
    {
        var result = reader.AsDataSet();
        var value = result.Tables[0].Rows[0][0].ToString();
        Console.WriteLine(value);
    }
}


๐Ÿ“Œ 5.Aspose.Cells for .NET (์ƒ์šฉ)
์œ ๋ฃŒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (ํ•˜์ง€๋งŒ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ ์ œ๊ณต)

์žฅ์ 

  • Excel ๊ฑฐ์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ ์ง€์› (์ฐจํŠธ, ์ˆ˜์‹, ํ”ผ๋ฒ— ๋“ฑ)
  • ๋Œ€์šฉ๋Ÿ‰ ์ฒ˜๋ฆฌ ๋ฐ ์„ฑ๋Šฅ ์ตœ์ ํ™” ์ž˜ ๋˜์–ด ์žˆ์Œ


๋‹จ์ 

  • ๋ผ์ด์„ ์Šค ๋น„์šฉ ๋ฐœ์ƒ
var workbook = new Aspose.Cells.Workbook("sample.xlsx");
var cellValue = workbook.Worksheets[0].Cells["A1"].StringValue;
Console.WriteLine(cellValue);


๐Ÿ“Œ 6. Gembox.Spreadsheet
๋ถ€๋ถ„ ๋ฌด๋ฃŒ / ์ƒ์šฉ ํ˜ผํ•ฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

์žฅ์ 
์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šฐ๋ฉฐ ๋น ๋ฆ„
.xls, .xlsx, .ods, .csv ๋“ฑ ๋‹ค์–‘ํ•œ ํฌ๋งท ์ง€์›

๋‹จ์ 
๋ฌด๋ฃŒ ๋ฒ„์ „์€ ํ–‰ ์ˆ˜ ์ œํ•œ(๋ฌด๋ฃŒ๋Š” ์ตœ๋Œ€ 150ํ–‰)

์„ค์น˜ (NuGet)

Install-Package GemBox.Spreadsheet
SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY");
var workbook = ExcelFile.Load("sample.xlsx");
var worksheet = workbook.Worksheets[0];
var value = worksheet.Cells[0, 0].Value;
Console.WriteLine(value);


๋ฐ˜์‘ํ˜•