programing

C#을 사용하여 Excel 파일 읽기/쓰기(.xls/.xlsx)

closeapi 2023. 5. 1. 21:24
반응형

C#을 사용하여 Excel 파일 읽기/쓰기(.xls/.xlsx)

C#에서 엑셀 파일을 읽고 쓸 수 있는 방법은 무엇입니까?프로젝트에 Excel Objects Library를 이미 추가했지만 파일에 액세스하기 위해 수행해야 할 작업에 대한 설명을 충분히 이해하지 못하고 있습니다.

제가 이해할 수 있도록 도와주시고, 설명할 때, 제가 이것에 익숙하지 않지만 완전히 새로운 사람은 아니라는 것을 명심해주세요.저는 공부를 많이 해서 완전히 모르는 것은 아닙니다.

저는 EPLUS를 사용하여 이러한 작업을 수행하는 것을 매우 좋아합니다.EP Plus는 프로젝트에서 참조할 수 있고 서버에서 스프레드시트를 쉽게 만들거나 수정할 수 있는 라이브러리입니다.저는 수출 기능이 필요한 모든 프로젝트에 사용합니다.

여기 라이브러리 사용 방법을 보여주는 멋진 블로그 항목이 있습니다. 라이브러리 자체에는 사용 방법을 설명하는 몇 가지 샘플이 포함되어 있어야 합니다.

타사 라이브러리가 Microsoft COM 개체보다 훨씬 사용하기 쉽다고 생각합니다.저는 그것을 시도해 보는 것을 추천합니다.

Excel에 필요한 모든 사항을 NPOI로 처리합니다.

https://github.com/dotnetcore/NPOI

일반적인 Excel 작업에 대한 예제 솔루션이 함께 제공됩니다.

간단하면서도 강력한 솔루션은 ClosedX입니다.ML 라이브러리.'닫힌' Excel 파일의 셀을 읽고 쓰는 것은 매우 간단합니다. 주요 논리는 다음과 같습니다.

using Excel = ClosedXML.Excel;

namespace Excel_Tests
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

     private void button1_Click(object sender, EventArgs e)
     {
        //create 'workbook' object
        var wb = new Excel.XLWorkbook("E:\\test1.xlsx");
        
        //create 'worksheet' object
        var ws = wb.Worksheets.Worksheet("Sheet1");

        //read cells
        var a = ws.Cell("A1").Value;
        var b = ws.Cell("B1").Value;

        Console.WriteLine(a.ToString());
        Console.WriteLine(b.ToString());

        //write cells
        ws.Cell("F2").Value = 9999999;
        ws.Cell("F2").Value = 2.333;
        ws.Cell("G2").Value = "This is cell G2";
        
        wb.Save();

    }
  }
}

Excel Automation(기본적으로 COM Base 항목)을 사용할 수 있습니다. 예:

Excel.Application xlApp ;
Excel.Workbook xlWorkBook ;
Excel.Worksheet xlWorkSheet ;


xlApp = new Excel.ApplicationClass();
xlWorkBook = xlApp.Workbooks.Open("1.xls", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

전체 자습서 링크

**Reading the Excel File:**

string filePath = @"d:\MyExcel.xlsx";
Excel.Application xlApp = new Excel.Application();  
Excel.Workbook xlWorkBook = xlApp.Workbooks.Open(filePath);  
Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);  

Excel.Range xlRange = xlWorkSheet.UsedRange;  
int totalRows = xlRange.Rows.Count;  
int totalColumns = xlRange.Columns.Count;  

string firstValue, secondValue;   
for (int rowCount = 1; rowCount <= totalRows; rowCount++)  
{  
    firstValue = Convert.ToString((xlRange.Cells[rowCount, 1] as Excel.Range).Text);  
    secondValue = Convert.ToString((xlRange.Cells[rowCount, 2] as Excel.Range).Text);  
    Console.WriteLine(firstValue + "\t" + secondValue);  
}  
xlWorkBook.Close();  
xlApp.Quit(); 


**Writting the Excel File:**

Excel.Application xlApp = new Excel.Application();
object misValue = System.Reflection.Missing.Value;  

Excel.Workbook xlWorkBook = xlApp.Workbooks.Add(misValue);  
Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);  

xlWorkSheet.Cells[1, 1] = "ID";  
xlWorkSheet.Cells[1, 2] = "Name";  
xlWorkSheet.Cells[2, 1] = "100";  
xlWorkSheet.Cells[2, 2] = "John";  
xlWorkSheet.Cells[3, 1] = "101";  
xlWorkSheet.Cells[3, 2] = "Herry";  

xlWorkBook.SaveAs(filePath, Excel.XlFileFormat.xlOpenXMLWorkbook, misValue, misValue, misValue, misValue,  
Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);  



xlWorkBook.Close();  
xlApp.Quit();  

사용하기 쉬운 라이브러리를 원하는 경우 NUGET 패키지를 사용할 수 있습니다.

  • ExcelDataReader - Excel 파일 읽기(대부분의 파일 형식)
  • SwiftExcel - Excel 파일(.xlsx)을 씁니다.

이러한 패키지는 타사 패키지입니다. 기본 기능에 무료로 사용할 수 있지만, 더 많은 기능을 원한다면 "pro" 버전이 있을 수 있습니다.

그들은 2차원 객체 배열(즉, 2차원 객체 배열)을 사용하고 있습니다.object[][] cells) 데이터를 읽거나 씁니다.

간단한 조작을 수행하고 있으며 xlsx에 연결할 수 있다면 XML을 직접 조작할 수 있습니다.저는 그것을 해보았고 그것이 훌륭한 입술을 더듬는 것보다 빠르다는 것을 알았습니다.

더 쉽게 사용할 수 있는 서드파티 립도 있습니다...MS가 할 수 없는 서버에서 사용할 수 있습니다.

언급URL : https://stackoverflow.com/questions/10419071/using-c-sharp-to-read-write-excel-files-xls-xlsx

반응형