< Back to Start Here page

Creating a Template in Excel with SQL Data

Training Guide

WelcomeHow Does It Work?InstallConnect to DataDesign Template & Insert DataRefine OutputOutput Template

Welcome to Windward Designer

Windward Studios takes a unique approach to reporting. Our Report Designer sits directly inside Microsoft Office which means you get to use a familiar and powerful tool without having to learn a new designer. If you’ve ever used one of our competitors’ products, you may be familiar with their modular designers that require you to build reports using bits and pieces, where every bit of text or every piece of data is a distinct object in your template. Windward changes all of that. With Windward in Microsoft Office, you design report templates just like you design any other document, utilizing Tags to insert your data wherever you need it seamlessly in-line with your other text and content.

How Does Windward Work?

Before we jump into template design, let’s talk about the philosophy of Windward. Let’s consider the example of a local energy company. Every month they need to send out bills to all their customers. Their data might look something like this:

Table of Customers Energy Bills

Using Windward, you design a single template in Word or Excel that allows you to generate a unique bill for every one of your customers. The example template below uses Tags as placeholders for data. Every piece of text contained in brackets ([ ]) is a Tag and will be replaced with data when the bill is generated. Windward does the heavy lifting – we pull in all the relevant information from your Data Source and format it as specified in the original template.

Now let’s look at one of our sample templates, the “Batch of Invoices – Template.xlsx”:

The template below was created from scratch in Microsoft Word. Everything you see in the template, from the header to the text to the color formatting, functions just like it normally would in Word - with one major exception. All the text you see contained in brackets ([ ]) are Tags. Windward uses Tags as placeholders for your data. Every Tag corresponds to an item in your Data Source. In this example, the Tags are used to fill in the data for any given Order Number and its subsequent information.

All the Tags are replaced with the corresponding data from the Data Source. Once you have Report Designer installed, you can open this template and play around with it to help get an idea of how Windward lets you design templates in a familiar environment. All of Word’s powerful design tools are available to you as you build unique templates.

Step 1 – Install

The first step to getting started is to install the Report Designer. Please visit the Windward Studios Downloads Page and download the Report Designer.

Please note: Windward Studios requires Microsoft Office running on Microsoft Windows to install.

1. Run the program WindwardWebInstall.exe.

2. Enter the License Key when prompted provided from the Windward Sales team or from the trial download email.  If you did not receive a License Key within 10 minutes of signing up for a trial, please contact our Sales team.

3. Start Microsoft Word or Excel.

4. When Word or Excel first starts, it may indicate that you do not have a valid license. Click Yes. At the prompt, copy and paste your license key into the license key field.

5. Verify that the Windward menu is available by opening Microsoft Word or Excel. If Report Designer is not present, please reboot your system.

6. For Troubleshooting, see the Instructions page.

Excel Ribbon with Windward and Windward Tools tabs

Step 2 - Connect To Data

In this training guide we are connecting to a sample JSON Data Source provided by Windward.

1. Open Microsoft Excel. Now that you’ve installed Windward Studios Report Designer, you will see two new tabs in the Microsoft Office Ribbon – the Windward tab and the Windward Tools tab.

Excel Ribbon with Windward and Windward Tools tabs

2. Click on the Windward Tab and click on the Data Sources button located on the left-hand side of the ribbon.

Data Sources button

3. In the Connection Editor window, in the New tab, click on JSON under Web/File.The Details pane will change to prompt you for your data source details.

4. Enter a Nickname for your data source connection. It is best practice to always assign a nickname to your Data Source in the Nickname field. This will make your life much easier down the road when working with templates or tracking down issues.

5. Fill in the following field:

  • File/URL: http://json.windward.net/Northwind.json

6. Click Test, and then click Add to add your connection. If all parameters and credentials are correct and a connection is made, you will receive a successful notification. Click Close to close the window.

Step 3 – Design Your Template & Insert Data

In this Training Guide we’re going to build a very basic order receipt that is generated anytime an order is completed. Connect to Windward's public database in Section 2 to follow along.

1. Open the Sales Receipt Template and check that it is connected to the database provided from Step 2- Connect to Data.

Now we’re going to insert a Tag that gives your template the ability to incrementally pull in as much connected data as you need – the ForEach Tag. The ForEach Tag is used to step through your DataSource and insert individual pieces of data for each entry in the Data Source. Almost all templates you create will utilize ForEach Tags.

3. First place your cursor on the cell A1 at the very beginning of the work sheet. 1.Navigate to the Windward tab, click the Tags drop-down menu. 2. Click on the ForEach Tag to insert a ForEachTag at the start of your document.

4. The “Select where you wish to insert a tag” dialog allows you to determine where in the cell you want your tag to go. Using the cursor, click directly before the word “Dear” to insert the tag at the beginning of the cell.

3. Now we’re going to set up the ForEach Tag so it knows what data we want to insert into this template. Click on the Tag to select it and then click on the Wizard button in the Windward tab to open the Json Path Wizard.

The Wizard is used to create a Query for the data. A query tells Report Designer exactly what data to pull from your data source for your report. This can seem technical your first time through, but the Query uses common language and you should be able to understand what we’re pulling from the Data Source as we build the statement. Since the CompanyName is in a different table than the Order information we’re going to make sure we’re pulling the correct CompanyName based off the OrderID.

4. In the JsonPath Wizard click on the link click here to add a node. In the Select the node to return dialog that appears, expand the Root Node($) and select Orders. Then click OK. Click OK in the JsonPath Wizard to save your query.

The ForEach Tag we made above will store information we will use later in a variable name associated with the tag.

5. Notice when you have the cell A1 selected, the Variable field in the ForEach Tag Properties section does not describe our data query very well. Let’s change the Variable to something more descriptive.

a. When prompted if you want to update tags with the new variable name, click Yes. In a template with a lot of tags, this will allow you to change all uses of a variable name when you change the variable name itself.

6. Now that we’ve specified that we want to use the Orders table set of data in our template, it’s time to insert our data Tags.

a. Let’s start by inserting a Tag for the Company Name in place of our COMPANYNAMEplaceholder text. Begin by selecting and deleting the COMPANYNAME text. You can do this in the text editor in Excel when the A1 cell is selected.

b. Now use the Tags dropdown to insert an Out Tag.

c. In the “Select where you wish to insert a tag” dialog, select after the word “Dear” to place the tag.

d. Click on the cell A1 and then click on the Wizard button in the Windward tab to open the SQL Wizard.

e. In the Select the tag you wish to edit dialog, select the Out tag by clicking on it.

f. In the JsonPath Wizard click on the link click here to add a node. In the Select the node to return dialog that appears select Customers. Then click OK.

g. Click on the link click here to add a group.

h. Click on the link click here to add a condition

i. Click on the link click here to select a node. In the Select the node to return dialog that appears, expand the Customers node and select CustomerID. Then click OK.

j. Click on the link click here to set the value. Expand the drop down on the right side of the field, and under the variable name you set before double click the CustomerID node.

k. Click on the link click here to add a node. In the Select the node to return dialog that appears select CompanyName. Then click OK. Click OK in the JsonPath Wizard to save your query.


We just created the CompanyName Tag for our template.

Next we need to query the data we will use in our table.

1. Use the Tags dropdown to insert a Query Tag in the cell A2.

2. Click on the Tag to select it and then click on the Wizard button in the Windward tab to open the JsonPath Wizard.

3. In the Json Path Wizard click on the link click here to add a node. In the Select the node to return dialog that appears expand JSON, Root Node ($) and select OrderDetails. Then click OK.

4. Click on the link click here to add a group.

5. Click on the link click here to add a condition.

6. Click on the link click here to select a node. In the Select the node to return dialog that appears,expand the Order Details node and select OrderID. Then click OK.

7. Click on the link click here to set the value. Expand the drop down on the right side of the field,and under the variable name you set before double click the OrderID node.

8. Click OK in the JsonPath Wizard to save your query.

Now let’s create the remaining Tags for our template.

1. Let’s start by inserting a Tag for the ProductID in place of our PRODUCTID placeholder text.Begin by selecting and deleting the PRODUCTID text.

2. Now use the Tags dropdown to insert an Out Tag.

3. Double-click on that Out Tag to open the Tag Editor window.

4. In the Tag Editor expand the node under your Query Tag and double-click the ProductID node. This builds the Query for this individual Tag. Then click Save Tag to close the window.

5. Just as we did for the ProductID Tag, replace your placeholder text with an Out Tag.

6. Double-click the Out Tag to open the Tag Editor.

7. Then select the matching node from the ForEach dropdown for our replacement text.

8. Click Save Tag.

Now, to demonstrate how standard Excel functionality works with Windward Studios Report Designer.

5. Let’s create a formula to calculate the Total Cost column.

a. Select the empty cell in the Total Cost column of our table to edit it.

b. Enter the text “=(()())” into the empty cell. The equals sign indicates to Excel that the cell contains a formula, and the parenthesis give us a general structure for our formula

c. Place the cursor in the first inner set of parentheses and use your mouse to select the cell B9, the cell containing our Out tag for Price. Notice the cell code “B9” is entered in the formula. You can achieve the same goal by simply typing “B9” into the formula if you prefer.

d. Enter a “*” on your keyboard to indicate multiplication. Notice the “*” is placed after “B9” in the formula.

e. Using this method, construct the formula “=((B9*C9) - (D9*C9))” This formula will find the total cost (Price * Quantity)minus the total discount (Discount * Quantity). Click the Enter key when you are finished to finish editing the formula.

We will see when we output that this formula calculates our Total Cost for the order using Excel’s native formula codes.

6. The final step is to add an End ForEach Tag so the document knows where to stop filling in data. Place the cursor in cell A12 (after the “Thank You!” text) and insert an End ForEach Tag from theTags dropdown.

Add an End ForEach

Our final template now looks like this:

Final template

Step 4 – Refine Your Output

On the Windward Tab you can use the Output dropdown to generate this template into a report in any supported format. Let’s start by generating it in XLSX format.

As you can see, we need to make a few revisions to our template to get it looking right.

1. The first easy fix is to move the End ForEach Tag to separate the receipts more. Insert three new rows between “Thank you” in A11 and the End ForEach tag in A12. This will make three empty rows appear between receipt.a. If you would like to make each receipt even more distinct, you can add a fill color to the row A13 to separate each one.

2. Now let’s change the Data Type of the OrderDate, Price, and Discount Tags so they look better.

a. Double-click on the OrderDate Tag to open the Tag Editor.

b. Switch the main pane to the Properties pane, click in the entry field to the right ofFormat, and open the formatting window by clicking the button on the right of the entry box.

c. The formatting window allows us to select a format for the Tag. This is very similar to Excel, where you are presented with options to standardize how this data is displayed in the output report. Since we’re formatting OrderDate, click on the Date option and then select the most appealing format for you. Once you have your format click Apply and then click Close. Finally click Save Tag to close the Tag Editor window. Your Tag doesn’t look any different, but when generated it will appear in the format you selected.

d. Repeat this process for the UnitPrice and Discount Tags, making sure that you select Currency instead of Date in the Formatting window.

3. To make our Total column output in a currency format we must use the built in Excel formats. In the Home tab of Excel, change the format from General to Currency.

Format to currency

4. Now let’s do some basic Excel formatting on the rest of the document. Let’s bold the OrderDate and OrderID Tags as well as the first row of our table. Feel free to format the rest of the template in any way you wish - any formatting you define here will carry over to your generated document.

When you’re done, generate another XLSX output of the template to see these changes.

This output looks MUCH better. Receipts are now clearly separated and we’re bolding parts of the template to draw attention to it. The Price and Discount columns are also now in commonly accepted currency format. Most customers find it very useful to make formatting changes and output their document frequently to see how those changes appear. As you build more complex templates and use elements such as images and charts you’ll find that it moves the rest of your content around as data is inserted.

Step 5 – Output Your Template

Once you have completed formatting your output, you’re ready to complete the final output of your template. To test your template you may output using the Designer, but in production you’ll probably use one of our Windward Studios Report Engines. Most users use one of two methods for outputting from an Engine. The first option it to copy the DOCX or XLSX template to your Engine server and provide that template to the Engine as needed. The second option is to use the Generate Code button in Office which gives you the backend code you the Engine needs to output documents. The Generate Code button is found in the Windward Tools tab.

For over 10 years, Windward has lead the industry with our world-class document generation platform that creates visually stunning, data-powered documents designed exactly the way users want and are created in a fraction of the time and cost compared to existing solutions. Proudly located in Boulder, Colorado, Windward Studios is the premier solution for developers and business users adding reporting and document generation capabilities to their applications in over 70 countries around the world.