Introduction
In this post, we will learn how to import JSON to Excel. We will use ODBC PowerPack to connect and query a JSON file. This article also covers creating Excel from SOAP XML Web Service so read full article to learn about SOAP API Export.
JSON stands for Java Script Object Notation and it is an Open and Standard format to read object with attributes and values. JSON is replacing XML because it is faster to read data, it is easier to parse data, it does not require end tags, it is shorter and it can use arrays.
We will load the data using the ZappySys JSON driver and then upload the data in Excel.
Requirements
This article assumes following requirements are met before you can follow the steps listed in this article.
- Make sure that Microsoft Excel installed
- Also, the driver ODBC PowerPack installed
Video Tutorial
Let’s take a look to this step by step tutorial.
An introduction to Rest API and OData
In this example, we will use OData (Open Data Protocol) to consume REST API. REST API (Representational State Transfer Application Program Interface) allows to handle the interoperability betwee computers and internet.
In REST API we can handle web services in different formats. In this example, we will work with the Northwind example. The Northwind example is available in this URL:
1 |
https://services.odata.org/V3/Northwind/Northwind.svc |
- By default the data is displayed in XML format. To show the data in JSON use this URL:
1https://services.odata.org/V3/Northwind/Northwind.svc/?$format=json
- There are collections of data like Categories, CustomerDemographic, Customers, etc. For example the following URL will show the data of the categories collection:
1https://services.odata.org/V3/Northwind/Northwind.svc/Categories?$format=json
- In the next steps, we will use ZappySys drivers to connect to this URL and query using OData.
Configure ODBC DSN for ZappySys JSON Driver
ODBC driver can be accessed in two modes.
- Using DSN
- Without DSN (Supply direct Connection String e.g. DRIVER={ZappySys JSON Driver}; …….. )
In this article, we will use DSN approach (User DSN). We will first add the ZappySys JSON Driver in the ODBC Data source Administrator.
Follow these steps to accomplish the task:
- First, Windows search, write ODBC and select the ODBC Data sources (32 bits)
- As a second step, in ODBC Data source Administrator press the Add button.
- In this step, create new data source, select ZappySys ODBC Driver.
- Here we have several properties, write a data source name. In this example, the name will be ZappySys JSON to Excel.
- The Data Source (URL or file path) can specify the URL of the source or if it is a local file, you can specify the local path. In this example, the URL is:
1https://services.odata.org/V3/Northwind/Northwind.svc/Customers?$format=jsonFor single file: c:\data\myfile_1.json
For multiple files: c:\data\myfile_*.json - Expand Other settings and in Data Format, select OData. Press OK.
How to import REST API data to Excel
- In Excel, go to Data Ribbon and select From Other Sources and From Microsoft Query.
- In Choose Data Source, select ZappySys JSON for Excel and press OK.
- Click Value and press the > to display all the attributes and press next.
- You can filter data and select columns and check if a columns is equal to, greater than or less than a specific value. In this example, we will not apply filters. Press next.
- Now if you want to export data to sheet without using custom Query then select first option. If you like to enter custom query then select Microsoft Query (second option) once you close the wizard you may get an option to enter custom SQL (see the toolbar of Graphical Designer)We will use first option for now.
- In this step, Excel will show the Import Data window. Excel will let you select the sheet to insert the data. We will choose the existing sheet.
- If everything is OK, you will be able to see the data.
How to import data from REST API to CSV
If you already have your data in Excel with the previous steps, converting the data extracted from Rest API to Excel to a CSV is a straight forward process.
- Using Excel, go to the File menú and select Save as and select a folder to store it.
- In order to save the data in CSV, save as type select CSV (Comma delimited)
How to import JSON to Excel (From Local file)
- To import data in Excel, the steps are the same for Rest API that for a physical json file. The only difference is that a local path is used instead of a URL. In order to get JSON data into Excel, you need to repeat the steps to add the ZappySys ODBC Driver in the ODBC Data source, but instead of specifying a URL, we just need to specify the local path.
- To test the driver, let’s say that we have the following named sample.json file:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266{"odata.metadata": "https://services.odata.org/V3/Northwind/Northwind.svc/$metadata#Customers","odata.nextLink": "Customers?$skiptoken='ERNSH'","value": [{"CustomerID": "ALFKI","CompanyName": "Alfreds Futterkiste","ContactName": "Maria Anders","ContactTitle": "Sales Representative","Address": "Obere Str. 57","City": "Berlin","Region": null,"PostalCode": "12209","Country": "Germany","Phone": "030-0074321","Fax": "030-0076545"},{"CustomerID": "ANATR","CompanyName": "Ana Trujillo Emparedados y helados","ContactName": "Ana Trujillo","ContactTitle": "Owner","Address": "Avda. de la Constitución 2222","City": "México D.F.","Region": null,"PostalCode": "05021","Country": "Mexico","Phone": "(5) 555-4729","Fax": "(5) 555-3745"},{"CustomerID": "ANTON","CompanyName": "Antonio Moreno Taquería","ContactName": "Antonio Moreno","ContactTitle": "Owner","Address": "Mataderos 2312","City": "México D.F.","Region": null,"PostalCode": "05023","Country": "Mexico","Phone": "(5) 555-3932","Fax": null},{"CustomerID": "AROUT","CompanyName": "Around the Horn","ContactName": "Thomas Hardy","ContactTitle": "Sales Representative","Address": "120 Hanover Sq.","City": "London","Region": null,"PostalCode": "WA1 1DP","Country": "UK","Phone": "(171) 555-7788","Fax": "(171) 555-6750"},{"CustomerID": "BERGS","CompanyName": "Berglunds snabbköp","ContactName": "Christina Berglund","ContactTitle": "Order Administrator","Address": "Berguvsvägen 8","City": "Luleå","Region": null,"PostalCode": "S-958 22","Country": "Sweden","Phone": "0921-12 34 65","Fax": "0921-12 34 67"},{"CustomerID": "BLAUS","CompanyName": "Blauer See Delikatessen","ContactName": "Hanna Moos","ContactTitle": "Sales Representative","Address": "Forsterstr. 57","City": "Mannheim","Region": null,"PostalCode": "68306","Country": "Germany","Phone": "0621-08460","Fax": "0621-08924"},{"CustomerID": "BLONP","CompanyName": "Blondesddsl père et fils","ContactName": "Frédérique Citeaux","ContactTitle": "Marketing Manager","Address": "24, place Kléber","City": "Strasbourg","Region": null,"PostalCode": "67000","Country": "France","Phone": "88.60.15.31","Fax": "88.60.15.32"},{"CustomerID": "BOLID","CompanyName": "Bólido Comidas preparadas","ContactName": "Martín Sommer","ContactTitle": "Owner","Address": "C/ Araquil, 67","City": "Madrid","Region": null,"PostalCode": "28023","Country": "Spain","Phone": "(91) 555 22 82","Fax": "(91) 555 91 99"},{"CustomerID": "BONAP","CompanyName": "Bon app'","ContactName": "Laurence Lebihan","ContactTitle": "Owner","Address": "12, rue des Bouchers","City": "Marseille","Region": null,"PostalCode": "13008","Country": "France","Phone": "91.24.45.40","Fax": "91.24.45.41"},{"CustomerID": "BOTTM","CompanyName": "Bottom-Dollar Markets","ContactName": "Elizabeth Lincoln","ContactTitle": "Accounting Manager","Address": "23 Tsawassen Blvd.","City": "Tsawassen","Region": "BC","PostalCode": "T2F 8M4","Country": "Canada","Phone": "(604) 555-4729","Fax": "(604) 555-3745"},{"CustomerID": "BSBEV","CompanyName": "B's Beverages","ContactName": "Victoria Ashworth","ContactTitle": "Sales Representative","Address": "Fauntleroy Circus","City": "London","Region": null,"PostalCode": "EC2 5NT","Country": "UK","Phone": "(171) 555-1212","Fax": null},{"CustomerID": "CACTU","CompanyName": "Cactus Comidas para llevar","ContactName": "Patricio Simpson","ContactTitle": "Sales Agent","Address": "Cerrito 333","City": "Buenos Aires","Region": null,"PostalCode": "1010","Country": "Argentina","Phone": "(1) 135-5555","Fax": "(1) 135-4892"},{"CustomerID": "CENTC","CompanyName": "Centro comercial Moctezuma","ContactName": "Francisco Chang","ContactTitle": "Marketing Manager","Address": "Sierras de Granada 9993","City": "México D.F.","Region": null,"PostalCode": "05022","Country": "Mexico","Phone": "(5) 555-3392","Fax": "(5) 555-7293"},{"CustomerID": "CHOPS","CompanyName": "Chop-suey Chinese","ContactName": "Yang Wang","ContactTitle": "Owner","Address": "Hauptstr. 29","City": "Bern","Region": null,"PostalCode": "3012","Country": "Switzerland","Phone": "0452-076545","Fax": null},{"CustomerID": "COMMI","CompanyName": "Comércio Mineiro","ContactName": "Pedro Afonso","ContactTitle": "Sales Associate","Address": "Av. dos Lusíadas, 23","City": "Sao Paulo","Region": "SP","PostalCode": "05432-043","Country": "Brazil","Phone": "(11) 555-7647","Fax": null},{"CustomerID": "CONSH","CompanyName": "Consolidated Holdings","ContactName": "Elizabeth Brown","ContactTitle": "Sales Representative","Address": "Berkeley Gardens 12 Brewery","City": "London","Region": null,"PostalCode": "WX1 6LT","Country": "UK","Phone": "(171) 555-2282","Fax": "(171) 555-9199"},{"CustomerID": "DRACD","CompanyName": "Drachenblut Delikatessen","ContactName": "Sven Ottlieb","ContactTitle": "Order Administrator","Address": "Walserweg 21","City": "Aachen","Region": null,"PostalCode": "52066","Country": "Germany","Phone": "0241-039123","Fax": "0241-059428"},{"CustomerID": "DUMON","CompanyName": "Du monde entier","ContactName": "Janine Labrune","ContactTitle": "Owner","Address": "67, rue des Cinquante Otages","City": "Nantes","Region": null,"PostalCode": "44000","Country": "France","Phone": "40.67.88.88","Fax": "40.67.89.89"},{"CustomerID": "EASTC","CompanyName": "Eastern Connection","ContactName": "Ann Devon","ContactTitle": "Sales Agent","Address": "35 King George","City": "London","Region": null,"PostalCode": "WX3 6FW","Country": "UK","Phone": "(171) 555-0297","Fax": "(171) 555-3373"},{"CustomerID": "ERNSH","CompanyName": "Ernst Handel","ContactName": "Roland Mendel","ContactTitle": "Sales Manager","Address": "Kirchgasse 6","City": "Graz","Region": null,"PostalCode": "8010","Country": "Austria","Phone": "7675-3425","Fax": "7675-3426"}]} - Finally, in the ZappySys driver, in Data Source (URL or File Path), write the path of your json file. In this example, c:\sql\sample.json. Also expand Data format and select Default.
NOTE: When the Data format is set to OData and it is a local json file, the error message is “Data processing error: URI formats are not supported”. If the Data format is set to Original, the error message is “Query execution error: Requested value ‘Original’ was not found.” To solve this issue, make sure that in Other Settings, the Data format is set to Default.
How to query JSON or REST API
Our ZappySys driver is a very intuitive tool and you can write queries to data like a simple database table.
Let’s take a look to some examples:
In the ODBC Data Source Administrator, press Configure.
On Preview page, write this query:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
select "CustomerID", "CompanyName", "ContactName", "ContactTitle", "Address", "City", "Region", "PostalCode", "Country", "Phone", "Fax" from [value] where City='Berlin' |
The query will show the customers where the city is Berlin:
You can use in the where clause with double quotes:
1 |
WHERE City="Berlin" |
or simple quotes:
1 |
WHERE City='Berlin' |
It is also valid to comment code. The following example shows how to comment a single line (the where clause):
1 2 3 |
select "CustomerID", "CompanyName from [value] --where City='Berlin' |
The following example shows how to comment multiple lines
1 2 3 4 5 6 7 |
/* This example shows how to comment multiple lines of code */ select "CustomerID", "CompanyName from [value] |
Schedule / Automate Excel file creation using command line
There will be a time when you need to export REST API to Excel in an automated way (Scheduled Task). Possibly via Batch file, Python code, PowerShell script or Scheduler. Check this article to learn more.
You can use ZappyShell for DB (Command Line Tool) to export JSON / SOAP / REST API data to Excel Sheet. It supports any ODBC Connection string as a source and you can export to CSV, Excel, JSON and XML.
Here is a sample command line. You can automate it via Scheduled Job (e.g. Windows Scheduler or SQL Agent Job)
First create below file (name it script.txt)
1 |
export "SELECT * FROM $ LIMIT 20 WITH(Src='https://httpbin.org/json',Filter='$.slideshow.slides[*]' , RequestMethod='GET')" -o "c:\data.xlsx" --connstr "DSN=MyAPIConnection;" -y |
Then call this (assuming you have zappyshell in c:\zappyshell folder
1 |
c:\zappyshell>db.exe exec c:\script.txt |
You can also use DSN less connection string such as below
1 |
export "SELECT * FROM $ LIMIT 20 WITH(Src='https://httpbin.org/json',Filter='$.slideshow.slides[*]' , RequestMethod='GET')" -o "c:\temp\data.xlsx" --connstr "DRIVER={ZappySys JSON Driver};" -y |
Calling XML SOAP Web Service in Excel
So far we have looked at examples to consume data using JSON driver. Now let’s look at an example, to call XML SOAP Web Service in Excel.
What is SOAP Web Service?
If you are new to SOAP Web Service sometimes referred as XML Web Service then please read some concept about SOAP Web service standard from this link There are two important aspects in SOAP Web service.- Getting WSDL file or URL
- Knowing exact Web Service URL
What is WSDL
In very simple term WSDL (often pronounced as whiz-dull) is nothing but a document which describes Service metadata (e.g. Functions you can call, Request parameters, response structure etc). Some service simply give you WSDL as xml file you can download on local machine and then analyze or sometimes you may get direct URL (e.g. http://api.mycompany.com/hr-soap-service/?wsdl )Example SQL Query for SOAP API call using ZappySys XML Driver
Here is an example SQL query you can write to call SOAP API. If you not sure about many details then check next few sections on how to use XML Driver User Interface to build desired SQL query to POST data to XML SOAP Web Service without any coding.SELECT * FROM $ WITH( Src='http://www.holidaywebservice.com/HolidayService_v2/HolidayService2.asmx' ,DataConnectionType='HTTP' ,CredentialType='Basic' --OR SoapWss ,SoapWssPasswordType='PasswordText' ,UserName='myuser' ,Password='pass$$w123' ,Filter='$.soap:Envelope.soap:Body.GetHolidaysAvailableResponse.GetHolidaysAvailableResult.HolidayCode[*]' ,ElementsToTreatAsArray='HolidayCode' ,RequestMethod='POST' ,Header='Content-Type: text/xml;charset=UTF-8 || SOAPAction: "http://www.holidaywebservice.com/HolidayService_v2/GetHolidaysAvailable"' ,RequestData=' <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:hol="http://www.holidaywebservice.com/HolidayService_v2/"> <soapenv:Header/> <soapenv:Body> <hol:GetHolidaysAvailable> <!--type: Country - enumeration: [Canada,GreatBritain,IrelandNorthern,IrelandRepublicOf,Scotland,UnitedStates]--> <hol:countryCode>UnitedStates</hol:countryCode> </hol:GetHolidaysAvailable> </soapenv:Body> </soapenv:Envelope>' )Now let's look at steps to create SQL query to call SOAP API. Later we will see how to generate code for your desired programming language (e.g. C# or SQL Server)
Video Tutorial - Introduction to SOAP Web Service and SoapUI tool
Before we dive into details about calling SOAP API using ZappySys XML Driver, lets first understand what is SOAP API and how to create SOAP requests using SoapUI tool. You will learn more about this process in the later section. The video contains some fragment about using SOAP API in SSIS but just ignore that part because we will be calling Soap API using ZappySys ODBC Driver rather than SSIS Components.Using SoapUI to test SOAP API call / Create Request Body XML
Assuming you have downloaded and installed SoapUI from here, now we are ready to use WSDL for your SOAP Web Service Calls. If you do not have WSDL file or URL handy then contact your API provider (sometimes you just have to add ?wsdl at the end of your Service URL to get WSDL so try that. Example: http://mycompany/myservice?wsdl ). If you don't know what is WSDL then in short, WSDL is Web service Description Language (i.e. XML file which describes your SOAP Service). WSDL helps to craft SOAP API request Body for ZappySys XML Driver. So Let's get started.- Open SoapUI and click SOAP button to create new SOAP Project
- Enter WSDL URL or File Path of WSDLFor example WSDL for our sample service can be accessed via this URL
http://www.dneonline.com/calculator.asmx?wsdl
Create new SOAP API Project in SoapUI tool for SOAP API Testing - Once WSDL is loaded you will see possible operations you can call for your SOAP Web Service.
- If your web service requires credentials then you have to configure it. There are two common credential types for public services (SOAP WSS or BASIC )
-
To use SOAP WSS Credentials select request node and enter UserId, Password, and WSS-PasswordType (PasswordText or PasswordHash)Configure SOAP WSS Credentials for SoapUI (SOAP API Testing Tool)
- To use BASIC Auth Credentials select request node and double-click it. At the bottom click on Auth (Basic) and From Authorization dropdown click Add New and Select Basic.
Configure Basic Authorization for SoapUI (SOAP API Testing Tool)
-
- Now you can test your request first Double-click on the request node to open request editor.
- Change necessary parameters, remove optional or unwanted parameters. If you want to regenerate request you can click on Recreate default request toolbar icon.
Create SOAP Request XML (With Optional Parameters)
- Once your SOAP Request XML is ready, Click the Play button in the toolbar to execute SOAP API Request and Response will appear in Right side panel. Test SOAP API using SoapUI Tool (Change Default XML Body / Parameters, Execute and See Response)
Create DSN using ZappySys XML Driver to call SOAP API
Once you have tested your SOAP API in SoapUI tool, we are ready to use ZappySys XML driver to call SOAP API in your preferred BI tool or Programming language.- First open ODBC Data Sources (search ODBC in your start menu or go under ZappySys > ODBC PowerPack > ODBC 64 bit)
- Goto System DSN Tab (or User DSN which is not used by Service account)
- Click Add and Select ZappySys XML Driver ZappySys ODBC Driver for XML / SOAP API
- Configure API URL, Request Method and Request Body as below ZappySys XML Driver - Calling SOAP API - Configure URL, Method, Body
- (This step is Optional) If your SOAP API requires credentials then Select Connection Type to HTTP and configure as below.
ZappySys XML Driver - Configure SOAP WSS Credentials or Basic Authorization (Userid, Password)
- Configure-Request Headers as below (You can get it from Request > Raw tab from SoapUI after you test the request by clicking the Play button) Configure SOAP API Request Headers - ZappySys XML Driver
- Once credentials entered you can select Filter to extract data from the desired node. Make sure to select array node (see special icon) or select the node which contains all necessary columns if you don't have array node. Select Filter - Extract data from nested XML / SOAP API Response (Denormalize Hierarchy)
- If prompted select yes to treat selected node as Array (This is helpful when you expect one or more record for selected node) Treat selected node as XML Array Option for SOAP API Response XML
Preview SOAP API Response / Generate SQL Code for SOAP API Call
Once you configure settings for XML Driver now you can preview data or generate example code for desired language (e.g. C#, Python, Java, SQL Server). Go to Preview tab and you will see default query generated based on settings you entered in previous sections. Attributes listed in WITH clause are optional. If you omit attribute in WITH clause it will use it from Properties tab.Preview Data
Preview SOAP API Response in ZappySys XML DriverGenerate Code Option
SOAP / REST API pagination in Excel
Paginate by Response Attribute
This example shows how to paginate API calls where you need to paginate until the last page detected. In this example, next page is indicated by some attribute called nextlink (found in response). If this attribute is missing or null then it stops fetching the next page.SELECT * FROM $ WITH( SRC=@'https://zappysys.com/downloads/files/test/pagination_nextlink_inarray_1.json' ,NextUrlAttributeOrExpr = '$.nextlink' --keep reading until this attribute is missing. If attribute name contains dot then use brackets like this $.['my.attr.name'] )
Paginate by URL Parameter (Loop until certain StatusCode)
This example shows how to paginate API calls where you need to pass page number via URL. The driver keeps incrementing page number and calls next URL until the last page detected (401 error). There are few ways to indicate the last page (e.g. By status code, By row count, By response size). If you don't specify end detection then it will use the default (i.e. No records found).SELECT * FROM $ WITH ( SRC=@'https://zappysys.com/downloads/files/test/page-xml.aspx?page=1&mode=DetectBasedOnResponseStatusCode' ,PagingMode='ByUrlParameter' ,PagingByUrlAttributeName='page' ,PagingByUrlEndStrategy='DetectBasedOnResponseStatusCode' ,PagingByUrlCheckResponseStatusCode=401 ,IncrementBy=1 )
Paginate by URL Path (Loop until no record)
This example shows how to paginate API calls where you need to pass page number via URL Path. The driver keeps incrementing page number and calls next URL until the last page is detected. There are few ways to indicate the last page (e.g. By status code, By row count, By response size). If you don't specify end detection then it will use the default (i.e. No records found).SELECT * FROM $ WITH ( SRC=@'https://zappysys.com/downloads/files/test/cust-<%page%>.xml' ,PagingMode='ByUrlPath' ,PagingByUrlAttributeName='<%page%>' ,PagingByUrlEndStrategy='DetectBasedOnRecordCount' ,IncrementBy=1 )
Paginate by Header Link (RFC 5988)
API like GitHub / Wordpress use Next link in Headers (RFC 5988)SELECT * FROM $ LIMIT 25 WITH( Src='https://wordpress.org/news/wp-json/wp/v2/categories?per_page=10' ,PagingMode='ByResponseHeaderRfc5988' ,WaitTimeMs='200' --//wait 200 ms after each request )
SOAP / REST API Error Handling in Excel
METHOD 1 - Using Error Handling Options
When to use?
You may want to use them when your source is a resource located on the Internet; e.g. a file on a website, a file on an FTP server or just a plain API HTTP response. By default, when a remote server returns an error, data retrieval is stopped, an error is raised and no data is given back to you. This might not be always desirable.Scenario 1
Imagine a scenario, that there is a web server which each day at 12 AM releases a new JSON file with that day's date as filename, e.g. http://www.some-server.com/data/2018-06-20.json. And, of course, you want to download it and use it daily in your Power BI report. But you have a problem: Power BI report data sources are refreshed each hour and you may get HTTP 404 status code (no file was found) when a file is not released yet. Which consequentially means other data sources won't be updated as well and you will see old and cached data on the report. That's where you could use Continue on any error or Continue when Url is invalid or missing (404 Errors) to avoid an error being raised and let other data sources to be updated.Scenario 2
Another scenario is when you expect a web server to raise some kind of HTTP error when accessing a URL. You don't want ODBC Data Source to raise an error but instead, you want to get response data. That's where you can use Continue on any error or alike together with Get response data on error to continue on an error and get the data:METHOD 2 - Using Connection [Retry Settings]
Another scenario you may run into is a buggy web server. You ask it to give you some file or data and it, like a snotty kid, just doesn't give it to you! You have to ask twice or thrice before it does its job. If that's the case, you have to retry HTTP requests using Connection:Security / Connection Types (Options for HTTP, OAuth, SOAP) in Excel
- HTTP
- OAuth
HTTP Connection
- SOAP WSS (when accessing a SOAP WebService)
- Static Token / API Key (when need to pass an API key in HTTP header)
- Dynamic Token (same as Static Token method except that each time you need to log in and retrieve a fresh API key)
- JWT Token (As per RFC 7519)
OAuth
If you are trying to access REST API resource, it is a huge chance, you will need to use OAuth Connection. Read this article to understand how OAuth authentication and authorization works and how to use it (article originally was written for SSIS PowerPack, but the concepts and UI stay the same): https://zappysys.com/blog/rest-api-authentication-with-oauth-2-0-using-ssisAPI Limit / Throttling
While calling public API or other external web services one important aspect you have to check, how many requests are allowed by your API. Especially when you use API pagination options to pull many records you have to slow down based on API limits. For example, your API may allow you only 5 requests per second. Use Throttling Tab on Driver UI to set delay after each request.2D Array Transformation
If you are using JSON or XML API Driver then possible you may have to transform your data using 2D array transformation feature. Check this link for more information.Troubleshooting Errors
While running in Access\Excel\other and reading data from DSN created with ODBC PowerPack, if you get this error "License type [ODBC_PP_TRIAL] not found or its expired"
Please refer to this article for the same: Troubleshooting "License type [ODBC_PP_TRIAL] not found or its expired" error in Microsoft Access
Conclusion
In this article, we learned how to use the ZappySys ODBC PowerPack to import JSON to Excel. We used the OData protocol and then we learned how to import from a JSON file to Excel. With ZappySys ODBC Power Pack, you can query REST API information or JSON files using SQL and filter the information or write custom queries according to your needs.
References
Keywords: How to import JSON to Excel (Load File or REST API), how to convert JSON to Excel, Import JSON to Excel 2016, Load JSON to Excel 2013, Import REST API to Excel 2010