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

C#을 사용하여 Excel에서 WEBSERVICE 함수를 추가하는 방법 > 블로그 & Tips

본문 바로가기

.NET API

블로그 & Tips

C#을 사용하여 Excel에서 WEBSERVICE 함수를 추가하는 방법

페이지 정보

작성자 GrapeCity 작성일 2021-11-30 09:27 조회 1,524회 댓글 0건

본문

Excel 워크시트에서 온라인 웹 서비스로부터 데이터를 가져올 수 있다는 사실이 멋지지 않나요! 데이터를 가져온 다음에는 Excel에서 구성할 수 있습니다. 주가 가져오기, 날씨 피드 또는 온라인에서 이용할 수 있는 지리적 데이터 등 이러한 데이터를 사용할 수 있는 일상적인 응용 프로그램이 많이 있습니다.

Excel 함수를 실행하는 것만큼 간단하게 사용할 수 있다는 점을 알고 계신가요? 긴 코드, 매크로, 스크립트를 작성하거나 PowerQuery를 사용할 필요가 없습니다.

Excel 2013에 도입된 WEBSERVICE 함수는 인터넷의 웹 서비스에서 직접 데이터를 XML 형식으로 가져올 수 있습니다. FILTERXML 함수를 사용하여 반환되는 XML 문자열을 구문 분석할 수 있으며, XPath 식을 사용하여 XML 문자열에서 특정 데이터를 반환합니다.

WEBSERVICE 및 FILTERXML 함수는 GcExcel 라이브러리에서 지원됩니다.

GcExcel을 시작하는 방법에 대해서 알아보시려면, 아래 링크를 확인해 주세요.

이 블로그에서는 GcExcel에서 이러한 함수를 사용하여 날씨 데이터 정보를 검색해 C#을 사용하여 Excel에 저장하는 방법을 설명합니다.


사용 사례: 웹 서비스에서 날씨 데이터 가져오기

GcExcel에서 WEBSERVICE 함수를 사용하여 미국 국립 기상국에서 날씨 데이터를 가져오겠습니다. 가져온 데이터(XML 형식)는 FILTERXML 함수에 제공됩니다. 이 함수는 XPath 식을 매개 변수로 사용하여 날씨 데이터로부터 지정된 정보를 XML 형식으로 반환합니다.

Excel 워크시트에 표시되는 최종 출력의 모양은 아래를 참조해 주시기 바랍니다.

webservice


다음 상세 단계에서는 이 시나리오를 구현하는 방법을 쉽게 이해할 수 있도록 도와드립니다.


1단계: C# 프로젝트 설정

아래 단계에 따라 기본 GcExcel 프로젝트를 만듭니다.

  1. VS에서 새로운 .NET Core 콘솔 응용 프로그램을 만듭니다.

  2. NuGet Package Manager에서 'GrapeCity.Documents.Excel' 패키지(버전 4.2.0)를 설치합니다.

  3. 새 통합 문서를 만들고 아래 코드를 사용하여 워크시트를 가져옵니다.

    //Create a new workbook
    var workbook = new GrapeCity.Documents.Excel.Workbook();
    //Fetch worksheet
    IWorksheet ws = workbook.Worksheets[0];

2단계: 날씨 데이터를 XML 형식으로 가져오기

아래 설명처럼 WEBSERVICE 함수에 URL을 전달하면 미국 국립 기상국의 날씨 데이터를 XML 형식으로 가져올 수 있습니다.

  • WEBSERVICE: 인터넷이나 인트라넷의 웹 서비스에서 데이터를 반환합니다.
  • 구문: WEBSERVICE(URL)

여기서 URL은 호출되는 웹 서비스에 속합니다. 셀 B2의 WEBSERVICE 함수를 적용하여 셀 B1에서 언급한 웹 서비스 URL에서 데이터를 가져왔습니다.

GcExcel에서 WEBSERVICE 함수에 이 샘플 코드 조각을 사용합니다.

ws.Range["A1"].Value = "URL";
//URL of Webservice
ws.Range["B1"].Value = "https://w1.weather.gov/xml/current_obs/KAKR.xml";
ws.Range["A2"].Value = "Data Fetched from URL (WEBSERVICE Function)";
ws.Range["A2"].VerticalAlignment = VerticalAlignment.Center;
​
//Use WEBSERVICE Function
ws.Range["B2"].Formula = "=WEBSERVICE(B1)";
//Wrap the XML string returned by WEBSERVICE Function
ws.Range["B2"].WrapText = true;
ws.Range["B2"].RowHeight = 200;


Excel에서 WEBSERVICE 함수와 출력의 모양은 아래와 같습니다.

webservice


XML 형식으로 가져온 데이터의 상세 보기는 아래와 같습니다.

"<?xml version=""1.0"" encoding=""ISO-8859-1""?>
<?xml-stylesheet href=""latest_ob.xsl"" type=""text/xsl""?>
<current_observation version=""1.0""
    xmlns:xsd=""http://www.w3.org/2001/XMLSchema""
    xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""
    xsi:noNamespaceSchemaLocation=""http://www.weather.gov/view/current_observation.xsd"">
  <credit>NOAA's National Weather Service</credit>
  <credit_URL>http://weather.gov/</credit_URL>
  <image>
      <url>http://weather.gov/images/xml_logo.gif</url>
      <title>NOAA's National Weather Service</title>
      <link>http://weather.gov</link>
  </image>
  <suggested_pickup>15 minutes after the hour</suggested_pickup>
  <suggested_pickup_period>60</suggested_pickup_period>
  <location>Akron, Akron Fulton International Airport, OH</location>
  <station_id>KAKR</station_id>
  <latitude>41.0375</latitude>
  <longitude>-81.46417</longitude>
  <observation_time>Last Updated on Aug 24 2021, 5:54 am EDT</observation_time>
      <observation_time_rfc822>Tue, 24 Aug 2021 05:54:00 -0400</observation_time_rfc822>
  <weather>Fair</weather>
  <temperature_string>68.0 F (20.0 C)</temperature_string>
  <temp_f>68.0</temp_f>
  <temp_c>20.0</temp_c>
  <relative_humidity>84</relative_humidity>
  <wind_string>Calm</wind_string>
  <wind_dir>North</wind_dir>
  <wind_degrees>0</wind_degrees>
  <wind_mph>0.0</wind_mph>
  <wind_kt>0</wind_kt>
  <pressure_string>1016.2 mb</pressure_string>
  <pressure_mb>1016.2</pressure_mb>
  <pressure_in>30.04</pressure_in>
  <dewpoint_string>63.0 F (17.2 C)</dewpoint_string>
  <dewpoint_f>63.0</dewpoint_f>
  <dewpoint_c>17.2</dewpoint_c>
  <visibility_mi>9.00</visibility_mi>
    <icon_url_base>http://forecast.weather.gov/images/wtf/small/</icon_url_base>
  <two_day_history_url>http://www.weather.gov/data/obhistory/KAKR.html</two_day_history_url>
  <icon_url_name>nskc.png</icon_url_name>
  <ob_url>http://www.weather.gov/data/METAR/KAKR.1.txt</ob_url>
  <disclaimer_url>http://weather.gov/disclaimer.html</disclaimer_url>
  <copyright_url>http://weather.gov/disclaimer.html</copyright_url>
  <privacy_policy_url>http://weather.gov/notice.html</privacy_policy_url>
</current_observation>"


3단계: XML에서 필요한 정보 추출

XML 형식으로 가져온 웹 서비스의 데이터가 있으므로 아래에서 설명하는 것처럼 FILTERXML 함수를 사용하여 해당 데이터에서 필요한 정보를 추출합니다.

  • FILTERXML: 지정된 XPath를 사용하여 XML 콘텐츠에서 특정 데이터를 반환합니다.
  • 구문: FILTERXML(xml, xpath)

XML은 유효한 XML 형식의 문자열이고 XPath는 표준 XPath 형식의 문자열입니다. XPath(XML 경로 언어)는 XML에 지정된 경로와 일치하도록 "경로와 같은(path-like)" 구문으로 정의되고 해당 경로에서 데이터를 추출합니다. 셀 B4~B7에서 FILTERXML 함수를 사용하여 지정된 정보를 반환했습니다. 해당 정보는 셀 B1에서 XML 형식으로 제공된 데이터에서 매개 변수로 전달된 XPath 식에 언급되어 있습니다.

GcExcel에서 FILTERXML 함수를 사용하기 위한 다음 샘플 코드 조각을 참조하세요.

//Add labels for resultant values from FILTERXML formula
ws.Range["A4"].Value = "Location";
ws.Range["A5"].Value = "Observation Time";
ws.Range["A6"].Value = "Weather";
ws.Range["A7"].Value = "Temperature";
​
//Fetch Location using ‘//location' XPath Expression
ws.Range["B4"].Formula = "=FILTERXML(B2,\"//location\")";
​
//Fetch Observation Time using ‘//observation_time' XPath Expression
ws.Range["B5"].Formula = "=FILTERXML(B2,\"//observation_time\")";
​
//Fetch Weather using ‘//weather' XPath Expression
ws.Range["B6"].Formula = "=FILTERXML(B2,\"//weather\")";
​
//Fetch Temperature using ‘//temperature_string ' XPath Expression
ws.Range["B7"].Formula = "=FILTERXML(B2,\"//temperature_string\")";


Excel에서 FILTERXML 함수와 출력의 모양은 아래와 같습니다.

webservice


마지막으로, 아래에 표시된 것처럼 셀에서 간단한 서식을 적용하고 'AutoFit' 및 'Save' 메서드를 사용하여 열을 자동으로 맞추고 통합 문서를 Excel에 각각 저장해 보겠습니다.

//Apply Formatting
ws.Range["A4:A7"].Interior.Color = Color.FromArgb(88, 132, 52);
ws.Range["A4:A7"].Font.Color = Color.White;
ws.Range["B4:B7"].Interior.Color = Color.FromArgb(226, 239, 218);
ws.Range["A4:B7"].Font.Bold = true;
ws.Range["A4:B7"].Font.Size = 12;
​
//Auto fit columns
ws.Range["A:B"].EntireColumn.AutoFit();
​
//Save to an Excel file
workbook.Save("webserviceandfilterxml.xlsx");


다음은 가져올 때 웹 서비스 데이터가 나타나는 방식입니다.

webservice


아래는 Excel에서 GcExcel을 사용하여 가져온 데이터입니다.

webservice


또한 위에서 설명한 모든 단계에 대한 코드가 포함된 샘플을 다운로드하여 이 사용 사례를 테스트해 보세요.

참고: WEBSERVICE 함수가 포함된 Excel 워크시트의 데이터는 다음과 같은 경우에만 업데이트됩니다.

  • 참조된 셀이 편집되는 경우

  • 전체 통합 문서를 새로 고친 경우(키보드 바로 가기: CTRL+ALT+F9)

또한, GcExcel 응용 프로그램을 실행할 때마다 데이터가 자동으로 업데이트됩니다.





지금 바로 GcExcel .NET Core를 다운로드하여 직접 테스트해보세요!

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

댓글목록

등록된 댓글이 없습니다.

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

태그1

인기글

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