ASP.NET Core 3.0에서 Excel로 데이터를 내보내는 방법

웹 애플리케이션을 빌드 할 때 종종 Word 또는 Excel 문서에서 데이터를 가져 오거나 내 보내야합니다. 이를 달성하는 방법에는 여러 가지가 있으며 Word 또는 Excel에서 작동하는 많은 NuGet 패키지가 있습니다. 이 문서에서는 ASP.NET Core에서 ClosedXML을 사용하여 데이터를 Excel로 내보내는 방법에 대해 설명합니다.

이 문서에 제공된 코드 예제를 사용하려면 시스템에 Visual Studio 2019가 설치되어 있어야합니다. 아직 복사본이없는 경우 여기에서 Visual Studio 2019를 다운로드 할 수 있습니다.

Visual Studio에서 ASP.NET Core MVC 프로젝트 만들기

먼저 Visual Studio 2019에서 ASP.NET Core 프로젝트를 만들어 보겠습니다. Visual Studio 2019가 시스템에 설치되어 있다고 가정하고 아래 설명 된 단계에 따라 Visual Studio에서 새 ASP.NET Core 프로젝트를 만듭니다.

  1. Visual Studio IDE를 시작합니다.
  2. "새 프로젝트 만들기"를 클릭합니다.
  3. "새 프로젝트 만들기"창의 표시된 템플릿 목록에서 "ASP.NET Core 웹 애플리케이션"을 선택합니다.
  4. 다음을 클릭하십시오.
  5. “Configure your new project”창에서 새 프로젝트의 이름과 위치를 지정합니다.
  6. 선택적으로 "동일한 디렉토리에 솔루션 및 프로젝트 배치"확인란을 선택합니다.
  7. 생성을 클릭합니다.
  8. 다음에 표시된 "새 ASP.NET Core 웹 애플리케이션 만들기"창에서 런타임으로 .NET Core를 선택하고 상단의 드롭 다운 목록에서 ASP.NET Core 2.2 이상을 선택합니다. ASP.NET Core 3.0을 사용하겠습니다. 
  9. 새 ASP.NET Core MVC 애플리케이션을 만들려면 프로젝트 템플릿으로 "웹 애플리케이션 (모델-뷰-컨트롤러)"을 선택합니다. 
  10. 여기서는 이러한 기능을 사용하지 않으므로 "Docker 지원 활성화"및 "HTTPS 용 구성"확인란이 선택 취소되어 있는지 확인합니다.
  11. 인증을 사용하지 않을 것이므로 인증이 "인증 없음"으로 설정되어 있는지 확인하십시오.
  12. 생성을 클릭합니다. 

다음 단계에 따라 Visual Studio에서 새 ASP.NET Core MVC 프로젝트를 만들어야합니다. 이 프로젝트를 사용하여 아래 섹션에서 Excel 용 데이터 내보내기를 설명합니다.

ClosedXML NuGet 패키지 설치 

데이터를 Excel로 내보내려는 경우 선택할 수있는 여러 라이브러리가 있습니다. 그중 하나는 ClosedXML입니다. Visual Studio 2019 IDE 내의 NuGet 패키지 관리자를 통해 또는 NuGet 패키지 관리자 콘솔에서 다음 명령을 실행하여이 패키지를 설치할 수 있습니다.

설치 패키지 ClosedXML

ASP.NET Core 3.0에서 CSV 파일로 데이터 내보내기

데이터를 쉼표로 구분 된 (CSV) 파일로 내보내는 것은 간단합니다. 이를 위해 CsvExport 또는 AWright18.SimpleCSVExporter와 같은 NuGet 패키지를 활용하거나 수동으로 수행 할 수 있습니다. 단순화를 위해 CSV 파일을 수동으로 생성합니다. Author라는 다음 클래스를 고려하십시오.

공개 클래스 작성자

{

  public int Id {get; 세트; }

  public string FirstName {get; 세트; }

  public string LastName {get; 세트; }

}

다음으로 아래 제공된 코드 스 니펫에 표시된대로 작성자 목록에 데이터를 채울 수 있습니다.

목록 작성자 = 새 목록

{

    새 작성자 {Id = 1, FirstName = "Joydip", LastName = "Kanjilal"},

    새 작성자 {Id = 2, FirstName = "Steve", LastName = "Smith"},

    새 작성자 {Id = 3, FirstName = "Anand", LastName = "Narayaswamy"}

};

다음 코드 조각은 컨트롤러의 작업 메서드에서 CSV 파일을 생성하는 방법을 보여줍니다.

public IActionResult DownloadCommaSeperatedFile ()

{

    시험

    {

       StringBuilder stringBuilder = new StringBuilder ();

       stringBuilder.AppendLine ( "Id, FirstName, LastName");

       foreach (저자의 var 작성자)

       {

           stringBuilder.AppendLine ($ "{author.Id},

           {author.FirstName}, {author.LastName} ");

       }

      return File (Encoding.UTF8.GetBytes

      (stringBuilder.ToString ()), "text / csv", "authors.csv");

    }

    잡기

    {

       return Error ();

    }

}

ASP.NET Core 3.0에서 데이터를 XLSX 파일로 내보내기

Excel의 통합 문서는 여러 워크 시트로 구성됩니다. 다음 코드를 사용하여 Excel 통합 문서를 만들 수 있습니다.

var workbook = new XLWorkbook ();

그런 다음 IXLWorkSheet 인터페이스를 활용하여 아래와 같이 워크 시트를 만들고 통합 문서에 추가 할 수 있습니다.

IXLWorksheet 워크 시트 = workbook.Worksheets.Add ( "Authors");

workstation.Cell (1, 1) .Value = "Id";

workstation.Cell (1, 2) .Value = "이름";

workstation.Cell (1, 3) .Value = "성";

for (int index = 1; index <= authors.Count; index ++)

{

   workflow.Cell (index + 1, 1) .Value = authors [index-1] .Id;

   workflow.Cell (index + 1, 2) .Value = authors [index-1] .FirstName;

   workflow.Cell (index + 1, 3) .Value = authors [index-1] .LastName;

}

마지막으로 통합 문서를 메모리 스트림으로 저장 한 다음 아래와 같이 FileContentResult 인스턴스를 만들 수 있습니다.

(var stream = new MemoryStream ()) 사용

{

     workbook.SaveAs (stream);

     var content = stream.ToArray ();

     return File (content, contentType, fileName);

}

ASP.NET Core 3.0에서 Excel 문서 다운로드

다음은 Excel 문서를 다운로드하는 데 사용할 수있는 작업 방법의 전체 소스 코드입니다.

공용 IActionResult DownloadExcelDocument ()

        {

            string contentType = "application / vnd.openxmlformats-

            officedocument.spreadsheetml.sheet ";

            string fileName = "authors.xlsx";

            시험

            {

                (var workbook = new XLWorkbook ()) 사용

                {

                    IXLWorksheet 워크 시트 =

                    workbook.Worksheets.Add ( "Authors");

                    workstation.Cell (1, 1) .Value = "Id";

                    workstation.Cell (1, 2) .Value = "이름";

                    workstation.Cell (1, 3) .Value = "성";

                    for (int index = 1; index <= authors.Count; index ++)

                    {

                        워크 시트. 셀 (인덱스 + 1, 1). 값 =

                        작성자 [index-1] .Id;

                        워크 시트. 셀 (인덱스 + 1, 2). 값 =

                        작성자 [index-1] .FirstName;

                        워크 시트. 셀 (인덱스 + 1, 3). 값 =

                        작성자 [index-1] .LastName;

                    }

                    (var stream = new MemoryStream ()) 사용

                    {

                        workbook.SaveAs (stream);

                        var content = stream.ToArray ();

                        return File (content, contentType, fileName);

                    }

                }

            }

            catch (예외)

            {

                return Error ();

            }

        }

이 기사에서는 ClosedXML을 사용했지만 EPPlus 및 NPOI를 포함하여 ASP.NET Core에서 Excel 데이터를 읽고, 쓰고, 조작하기위한 몇 가지 다른 패키지가 있습니다. ClosedXML에 대한 자세한 내용은 //github.com/ClosedXML/ClosedXML에서 GitHub에서 확인할 수 있습니다. 여기의 향후 게시물에서 ASP.NET Core 애플리케이션에서 Excel 데이터를 가져 오는 방법에 대해 설명하겠습니다.

ASP.NET 및 ASP.NET Core에서 더 많은 작업을 수행하는 방법 :

  • ASP.NET Core에서 메모리 내 캐싱을 사용하는 방법
  • ASP.NET Web API에서 오류를 처리하는 방법
  • Web API 컨트롤러 메서드에 여러 매개 변수를 전달하는 방법
  • ASP.NET Web API에서 요청 및 응답 메타 데이터를 기록하는 방법
  • ASP.NET에서 HttpModules를 사용하는 방법
  • ASP.NET Core Web API의 고급 버전 관리
  • ASP.NET Core에서 종속성 주입을 사용하는 방법
  • ASP.NET에서 세션으로 작업하는 방법
  • ASP.NET에서 HTTPHandler를 사용하는 방법
  • ASP.NET Core에서 IHostedService를 사용하는 방법
  • ASP.NET Core에서 WCF SOAP 서비스를 사용하는 방법
  • ASP.NET Core 애플리케이션의 성능을 개선하는 방법
  • RestSharp를 사용하여 ASP.NET Core Web API를 사용하는 방법
  • ASP.NET Core에서 로깅 작업 방법
  • ASP.NET Core에서 MediatR을 사용하는 방법
  • ASP.NET Core에서 세션 상태로 작업하는 방법
  • ASP.NET Core에서 Nancy를 사용하는 방법
  • ASP.NET Web API의 매개 변수 바인딩 이해
  • ASP.NET Core MVC에서 파일을 업로드하는 방법
  • ASP.NET Core Web API에서 전역 예외 처리를 구현하는 방법
  • ASP.NET Core에서 상태 확인을 구현하는 방법
  • ASP.NET 캐싱의 모범 사례
  • .NET에서 Apache Kafka 메시징을 사용하는 방법
  • 웹 API에서 CORS를 활성화하는 방법
  • WebClient 대 HttpClient 대 HttpWebRequest를 사용하는 경우
  • .NET에서 Redis Cache로 작업하는 방법
  • .NET에서 Task.WaitAll 대 Task.WhenAll을 사용하는 경우