! 제품 버전을 정확하게 입력해 주세요.
제품 버전이 정확하게 기재되어 있지 않은 경우,
최신 버전을 기준으로 안내 드리므로
더욱 빠르고 명확한 안내를 위해
제품 버전을 정확하게 입력해 주세요!

C#를 사용하여 XML 및 JSON에서 프로그래밍 방식으로 Excel XLSX 생성하기 > 블로그 & Tips

본문 바로가기

ComponentOne

블로그 & Tips

C#를 사용하여 XML 및 JSON에서 프로그래밍 방식으로 Excel XLSX 생성하기

페이지 정보

작성자 GrapeCity 작성일 2022-04-20 16:04 조회 2,618회 댓글 0건

본문

데이터에서 Excel 파일을 생성하는 것은 일반적인 요구 사항이며, 보통 이 작업을 수행하기 위해서는 사용자 정의 코드를 작성해야 합니다. 데이터를 서비스에 전송하고 Excel 파일로 다시 받는 것이 훨씬 쉽습니다. 데이터는 JSON, ODATA, XML 또는 DataTable을 비롯한 여러 소스로 가져올 수 있습니다. ComponentOne Web API의 Excel API를 사용하여 Excel을 생성하는 방법을 살펴보겠습니다. 이러한 REST 서비스는 호스팅할 수 있으며 WinForms, XAML, JavaScript, ASP.NET MVC 등 모든 플랫폼에 구축된 클라이언트에서 사용할 수 있습니다.

ComponentOne Web API는 다음 API로 구성됩니다.

  • Excel - JSON, XML, Collections에서 Excel 생성, Excel 파일 병합, 분할, 행 및 열에 대한 API 및 검색

  • PDF - Wijmo, ASP.NET MVC 응용 프로그램에서 FlexViewer 내부 PDF 문서를 보고, 로드하며, 캐싱하기 위해 RESTful HTTP 서비스를 구축합니다. Windows 종속성이 있습니다.

  • 보고 - FlexReport 및 SSRS 보고서를 로드하고 캐시하기 위해 RESTful HTTP 서비스를 구축합니다. 다양한 형식으로 보고서를 내보내고, Wijmo, ASP.NET MVC 응용 프로그램 내의 FlexViewer에서 FlexReport를 확인합니다. Windows 종속성이 있습니다.

  • 바코드 - 텍스트에서 스캔할 수 있는 바코드를 생성하고 이미지 형식으로 저장합니다.

  • 데이터 엔진 - 메모리 내 슬라이스, 집계를 통해 대량의 데이터를 분석하고 MVC 및 Wijmo에서 OLAP 컨트롤로 데이터를 바인딩하여 클라이언트에서 추가로 분석합니다.

  • 클라우드 저장소 - Azure, AWS, OneDrive, DropBox, GoogleDrive 등의 클라우드 저장소에서 CRUD 작업을 수행합니다. ASP.NET MVC 응용 프로그램의 FileManager에서 파일을 확인합니다.

  • 방문자 - IP, 위치, 언어, 참조 사이트, 운영 체제, 브라우저 등의 방문자 데이터를 수집합니다. 개별 사용자를 위해 사용자 정의 콘텐츠를 전달하는 것이 유용합니다.


ODATA JSON에서 Excel 생성하기

이 예제에서는 services.odata.org에서 Northwind JSON 데이터를 사용하여 JSON을 Web API에 가져오고(ODATA DataConnector가 데이터 가져오기 및 기타 작업을 손쉽게 하는 방법 확인)을 전송합니다.

(참고: 서비스는 JSON을 전송하기 전에 완전히 제거해야 하는 추가 데이터도 전송합니다. 여기에서 JSONConvert 클래스는 원시 JSON을 역직렬화한 다음 직렬화하여 필요한 데이터를 가져오는 데 도움이 됩니다. )

원시 JSON:

C# 형식의 XML JSON에서 Excel

private void GetExcel_Click(object sender, EventArgs e)  
      {  
           GenerateFromJSON(apiurl);  
      }  
string apiurl = "https://www.grapecity.com/componentone/demos/aspnet/5/C1WebAPI/latest/api/excel";  //web api demo url  

public void GenerateFromJSON(string webapiurl)  
      {  
           var url = "http://services.odata.org/V4/Northwind/Northwind.svc/Products?$format=json";  //get products from ODATA service  

           using (var clientjs = new HttpClient())  
          {  
               HttpResponseMessage responseJSON = clientjs.GetAsync(url).Result;    
               responseJSON.EnsureSuccessStatusCode();  
               var responseBody = responseJSON.Content.ReadAsStringAsync().Result;  //Get JSON from ODATA service  

               var data = JsonConvert.DeserializeObject(responseBody)["value"];  //use JsonConvert to deserialize raw json  

               using (var client = new HttpClient())  
               using (var formData = new MultipartFormDataContent())  
              {  
                   var fileFormat = "xlsx";  
                   formData.Add(new StringContent("Test"), "FileName");  
                   formData.Add(new StringContent(fileFormat), "FileFormat");  
                   formData.Add(new StringContent(JsonConvert.SerializeObject(data)), "Data");  
                  //Call WebAPI to get Excel  
                   var response = client.PostAsync(webapiurl, formData).Result;  
                   if (!response.IsSuccessStatusCode)  
                  {  
                       MessageBox.Show("Invalid response.");  
                       return;  
                  }  
                   var tempPath = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());  
                   if (!Directory.Exists(tempPath))  
                  {  
                       Directory.CreateDirectory(tempPath);  
                  }  
                   //Save Excel to Tem directory.  
                   var tempFilePath = Path.Combine(tempPath, string.Format("{0}.{1}", "Test", fileFormat));  
                   using (var newFile = File.Create(tempFilePath))  
                  {  
                       response.Content.ReadAsStreamAsync().Result.CopyTo(newFile);  
                  }  
                   //Open Excel to view.  
                   Process.Start(tempFilePath);  
              }  
          }  
      }


결과 Excel 파일:

C# 형식의 XML JSON에서 XLSX

데이터 표에서 Excel 생성

이제 ADO.NET 데이터 표의 Excel 파일 생성에 대해 살펴보겠습니다. DataTable.WriteXml 메서드를 사용하여 XML을 가져온 다음 XML을 Web API에 전송하여 Excel을 생성하겠습니다. 데이터 표 XML을 사용할 필요는 없으며 xml 데이터 파일의 콘텐츠는 하위 항목과 동일한 다중 요소가 있는 루트 요소인 컬렉션과 같아야 합니다.

<orders>
   <order id="1">
       <price>1000</price>
   </order>
  ......
</orders>


데이터 표 XML:

C# 형식의 XML JSON에서 Excel


private void GenerateExcel_Click(object sender, EventArgs e)  
      {  
          GenerateFromXML(apiurl);  
      }  
string apiurl = "https://www.grapecity.com/componentone/demos/aspnet/5/C1WebAPI/latest/api/excel";  //web api demo url  

public void GenerateFromXML(string webapiURL)  
      {  

           DataTable dt = new System.Data.DataTable();  
           dt.TableName = "Products";  
           dt.Columns.Add("ID", typeof(int));  
           dt.Columns.Add("Product", typeof(string));  
           dt.Columns.Add("Active", typeof(bool));  
           dt.Rows.Add(1, "Electronics", true);  
           dt.Rows.Add(2, "Food", true);  
           dt.Rows.Add(3, "Garments", true);  
           dt.Rows.Add(4, "Stationary", true);  
           dt.Rows.Add(5, "Antiques", false);  

          //Create Temp directory to save xml file  
           var tempDir = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());  
            Directory.CreateDirectory(tempDir);  
           string path = Path.Combine(tempDir, string.Format("{0}.{1}", "Prodcuts", "xml"));  
          //Write to xml file  
           dt.WriteXml(path, System.Data.XmlWriteMode.IgnoreSchema);  

           //Create HttpClient and MultipartFormDataContent  
           using (var client = new HttpClient())  
           using (var formData = new MultipartFormDataContent())  
           using (var fromFile=File.OpenRead(path))  
          {  

               formData.Add(new StringContent("Test"), "FileName");  
               formData.Add(new StringContent("xlsx"), "FileFormat");  
               formData.Add(new StreamContent(fromFile), "DataFile",Path.GetFileName(path));  
               //Call WebAPI  
               var response = client.PostAsync(webapiURL, formData).Result;  
               if (!response.IsSuccessStatusCode)  
              {  
                   MessageBox.Show("Invalid response.");  
                   return;  
              }  
               var tempPath = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());  
               if (!Directory.Exists(tempPath))  
              {  
                   Directory.CreateDirectory(tempPath);  
              }  
               //Save Excel file to Temp directory  
               var tempFilePath = Path.Combine(tempPath, string.Format("{0}.{1}", "Test", fileFormat));  
               using (var newFile = File.Create(tempFilePath))  
              {  
                   response.Content.ReadAsStreamAsync().Result.CopyTo(newFile);  
              }  
               //Open In Excel  
               Process.Start(tempFilePath);  
          }  
      }


XML의 결과 Excel

C# 형식의 XML JSON에서 XLSX


Web API 또는 DataServices 를 설치하는 경우 "~\Do더 많은 샘플을 찾아볼 cuments\ComponentOne Samples\Web Api" 폴더에서 수 있습니다.

Web API는 Enterprise 버전과 사용할 수 있습니다. DataService 에디션은 응용 프로그램을 더욱 쉽게 개발할 수 있도록 하는 아래 기능을 제공합니다.

  • 다양한 온라인 및 클라우드 기반 소스에서 데이터 액세스 및 통합

  • 메모리 내 캐싱 및 데이터 가상화를 활용하여 더욱 빠른 대용량 데이터 집합 로드 및 분석 전달

  • 텍스트 파일 및 HTML 페이지를 구문 분석하여 데이터베이스가 아닌 소스에서 데이터 추출

  • 파일 및 데이터 내보내기, 업로드 및 캐싱을 위해 웹 서비스로 앱의 권한 부여 및 확장

  • Web API를 통해 이미지에서 PDF로 모든 항목 내보내기

  • 이미지, 문서, 보고서 및 바코드 다운로드, 업로드, 캐싱, 생성 및 내보내기를 위한 Web API

  • .NET 6, .NET Core, ASP.NET MVC, WinForms, WPF, WinUI, UWP, Xamarin 및 OS X 지원

Web API를 구성하고 호스팅하는 방법 >>

Web API Explorer 데모 확인 >>




지금 바로 ComponentOne을 다운로드하여 직접 테스트해보세요!

 
  • 페이스북으로 공유
  • 트위터로  공유
  • 링크 복사
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기

태그1

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@mescius.com | 전화 : 1670-0583 | 경기도 과천시 과천대로 7길 33, 디테크타워 B동 1107호 메시어스(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 ⓒ 2024 MESCIUS inc. All rights reserved.