Q: What is Calc4Web?

A: Calc4Web is an Excel add-in with a patent-pending technology that automatically converts Excel calculations to C++. The converted code may be in the form of subroutines (.DLLs), User Defined Functions (.XLLs), or Web Services. Because Calc4Web converts to .DLLs and Web Services, applications written in Java or any other computer language can call into the Calc4Web generated code.

The implications of Calc4Web’s technology are far reaching. With Calc4Web, spreadsheet calculations can now be made available automatically for use by other systems or for use as Web services over the Internet without any coding. Calc4Web is also a custom mathematical code generator that allows you to automatically generate ready-to-use computer code by simply setting up your math in Excel and pushing a button. With Calc4Web, you no longer need to code manually (or by hand) and you no longer have to hire programmers to spend weeks coding up your math. Because with Calc4Web, once you have a working algorithm in Excel, you can immediately convert it into working C++ code without any debugging or testing of the C++ code. In effect, the debugging and testing has been transferred from the code level to the Excel level. And as programmers know, since 90% of development time is debugging and testing, with Calc4Web, you can now develop code as much as 10 times faster.

You can also use Calc4Web to secure your spreadsheets by converting the critical and sensitive parts of the spreadsheet into custom User Defined Functions (.XLLs). Those custom functions are a great way to hide the logic of your calculations and an excellent way to protect your calculations from accidental keyboard tampering. And because Calc4Web compiles the converted C++ code into binary code, Calc4Web can also make your spreadsheets run as much as 300 times faster.

The result is spreadsheets that are cross-platform.

Q: What is a Web Service? Don’t you mean Web Server?

A: No, a Web Service and a Web Server are two very different things.

A Web Server is defined both as both hardware and software. Web Server software is a program that gets messages over the Internet from Web surfers, such as “send me this web page” and then it honors the request by sending that page back to the surfer, whose browser then displays it in a formatted and readable way. Web Server hardware is the machine that is running the Web Server software.

A Web Service is a separate software program from the Web Server. Its job is to be passed data consisting of numbers and text (maybe two numbers, maybe 10 names, maybe a combination), and then it does pre-defined calculations based on what it’s been passed, and it sends the result back (this is a lot like a DLL, or dynamic link library, on Windows, and a shared object file on Linux, which can be called by a program running on the same machine as the DLL).

A modern Web Server is capable of both sending requested Web pages to surfers, which are usually just bits of text and pictures, and is also capable of running the Web Service software. So a Web Server interacts with the user, and the Web Service interacts with the Web Server. There can be any number of Web Services attached to a Web Server, and the Web Server acts like a kind of traffic cop, getting Web Service requests for a certain calculation, giving the calculation inputs to the appropriate Web Service, getting the calculation result from the Web Service, and then passing the result back to the person who requested it.

There are a couple of things that make this special. First, Web Services use a form of regular HTTP to communicate the calculation request between the user’s browser and the Web Server, and the language the Web Server uses to communicate the calculation parameters to the Web Service is also standardized. This means that as long as you create your Web Service to communicate in the right language, the Web Service can get in on this game.

Second, a Web Service is about calculations, not look and feel. This means that any program that can communicate with Web Servers via HTTP can call into a Web Service running anywhere on the Internet. The user of the Web Service does not need to use a browser. This is extremely important, because it makes the Web Service calculation available to a much wider range of users. For example, an Excel spreadsheet can contain a user-defined function which sends a request over the Internet to a Web Service to get a stock price, or to calculate the amount of materials to order for a bid. Or a standalone accounting application might call into a Web Service to calculate the amount of payroll taxes to deduct from an employee. Or a programmer might write their own utility to enter buy and sell orders in their brokerage account instead of using the broker’s Web site. Of course, Web pages can be created which call into Web Services, too.

Web Services are an embodiment of the efficiencies that are achieved by building software systems out of small well-defined components, which greatly benefits the firms that use these systems. Web Services also enjoy the deployment benefits of Software As A Service: since the Web Service is only installed in one place, it is simple to upgrade the Web Service without requiring the files to be updated everywhere.

Web Services also benefit the Web Service writer by opening up a convenient commerce channel to charge for their Web Services in many ways: a one-time upfront fee for perpetual access, a fee for limited time access, or a pay-per-calculation fee. Web Service creators can team up with a Web hosting service and set up shop with minimal effort in much the same way that turnkey Internet stores are available.

Q: Web Services sound great, but where does Calc4Web come in?

A: While Web Services create powerful opportunities, there are two major hurdles that a would-be Web Service developer must overcome to create a Web Service. The first is that you need to know how to write a program in a high level language like C++ or Java. The second is that you need to know how to make the Web Service communicate with the Web Server using the XML and SOAP standards. Neither of these is trivial to learn. And even for those who have this knowledge, turning the ideas into working bug-free code can take an enormous amount of time and effort.

But with Calc4Web, all that goes away. If you can create a spreadsheet that performs the calculations (and chances are, you already have it and that’s what you use), Calc4Web will turn those calculations into a Web Service automatically in seconds at the push of a button.

Calc4Web takes care of the C++ for you, by turning the spreadsheet formulas into perfect C++ code that works on the first try, compiled into a DLL that can be called from any application. And Calc4Web will also go one step further, and create a Web Service that knows how to talk to a Web Server, and then performs the calculations that were in the spreadsheet.

Calc4Web provides two vital links in the chain connecting end users to those with the domain knowledge those users need.

Q: Is Calc4Web generated code less efficient than old fashioned, manually written code?

A: No. Calc4Web generated code is just as efficient as manually written code because the code is still regular C++. There is no extra overhead introduced by the fact that it was generated by a computer program.

Q: What does "cross-platform" mean?

A: Calc4Web can create files that are readable by Windows, Unix or Linux systems. This means Excel spreadsheets for Windows can be run on Linux machines.

Q: What's meant by the phrase "Program in C using Excel"?

A: Essentially, Calc4Web is a programmer, converting spreadsheet formulas to C++ code. But the logic of the program is still written by the spreadsheet user. Instead of the traditional method of hiring a programmer to convert the spreadsheet logic to C++, Calc4Web does it at the push of a button, and far better because Calc4Web can code much faster, much cheaper, and with no errors or bugs. The implications of this are far-reaching: Calc4Web technology empowers spreadsheet users who have no programming knowledge to program in C++.

Q: Excel is a toy. I do all my real work in C++. How would Calc4Web help me?

A: In many ways, programming in Excel is easier than programming in C++. For one, you don't have to worry about getting all the statements in the right order like you do in C++ or any other high level language; Excel is more like a visual programming language in this way. Also, debugging in Excel is much easier and faster: you can see the formulas as well as the values of those formulas right there in front of you, which is much simpler than a C++ debugger. Of course, C++ lets you do some things much more easily than Excel. But for many mathematical problems, Excel is a great environment for modeling, even for a C++ programmer.

Q: Don't I lose control over what's put into production?

A: The process is exactly the same as is currently followed: a new model is verified before it's put into production. Calc4Web only helps, as it removes the possibility for errors (and fraud) when the model is converted from math to C.

Q: Do I need a C++ compiler to use Calc4Web?

A: Yes. While Calc4Web will write the C++ code, you'll still need a compiler. However, several are available for free. In fact, Calc4Web ships with one, and even Microsoft offers one for free.

Q: Do you really mean 300 times faster?

A: Yes, that's no typo. Depending on the spreadsheet, overnight runs can go from 8 hours to a minute and a half. And F9's that put you on a coffee break can recalc in the blink of an eye. However, the actual speedup you experience does depend somewhat on the type of calculations being done inside the worksheet.

Q: Is Calc4Web another hardware accelerator?

A: No, Calc4Web is a pure software product.

Q: How does it make spreadsheets run 300 times faster?

A: Calc4Web completely takes advantage of the fact that programming code runs much faster than spreadsheet code. Calc4Web's patent-pending technology actually converts the Excel spreadsheet formulas into C++ programming code, and then compiles it into binary code (0's and 1's).

Excel needs to trade off between speed and flexibility. Every time the user hits F9 to recalculate in Excel, it needs to convert every cell in the spreadsheet into the binary 0's and 1's that the computer understands, as well as determine the right order to calculate the cells, and how to format them. Calc4Web isn't hampered by any of that. Calc4Web directly generates binary code, so when the calculations are performed there's no overhead. This makes Excel run up to 300 times faster.

Q: My spreadsheets are already pretty fast. Why would I need Calc4Web?

A: Calc4Web offers two other major benefits, which for many people are actually more important than the incredible speed improvements:

  • Immediate use of of Excel calculations and models by other systems and as Web Services over the internet (Excel migration)

    Calc4Web takes an Excel spreadsheet and outputs a DLL file which can be read and used by other systems (your original spreadsheet stays intact), including front, middle, and back office systems. This new file runs as fast as if a programmer had rewritten the spreadsheet model in C++, and it's just as portable and cross-platform. That's because the file is written in C++. Calc4Web also takes the DLL one step further and converts it into a Web Service which can be called over the Internet by any type of application that has internet access.

  • Encapsulation of a model into a single function

    A model consists of some inputs, a bunch of calculations based on those inputs, and an output. A model can consist of thousands of cells in a spreadsheet. Calc4Web turns all those cells into a single function, which takes the inputs, and returns the output.

Q: What's the value of encapsulating an algorithm into a single function?

A: One key benefit of encapsulation is that a model can be reused in other spreadsheets without copying over copious amounts of the original spreadsheet. Imagine a spreadsheet that takes a bond's maturity and coupon, which then generates cash flows for every coupon date in the future, which are then discounted back at some assume interest rate, and then summed up to get a theoretical price for the bond. This could take up hundreds of rows and several columns.

If the calculation were to be done on a portfolio of bonds, all those rows and columns would have to be copied across or down to have a separate section for each bond in the portfolio.

But with Calc4Web, once the model has been created for one bond, you simply push a button to create a function with the coupon, maturity, and interest rate as the inputs. Then, use the function for each bond in the portfolio. The number of cells in the spreadsheet is reduced from several thousand to just a handful.

Q: How does Calc4Web reduce my operational spreadsheet risk?

A: The binary code that is created by Calc4Web is a file that the computer knows how to read, but not people. This means that modelers can distribute the binary code, instead of the spreadsheet, to other users, without worrying about the recipients inadvertently breaking the spreadsheet by adding rows or columns without fully understanding the implications. With Calc4Web, this can't happen. In addition, proprietary algorithms can now be kept from prying eyes, allowing for safer and wider distribution of intellectual property.

Q: Does it only work on some spreadsheets?

Calc4Web works with any Excel spreadsheet.

Q: What about Excel's built-in functions?

We have emulated every Excel built-in function (over 300 of them, except a few which are not relevant, such as the version of Excel, which is undefined if one is running the model without Excel), so any spreadsheet that calls into them will work fine.

Q: What about the Analysis Toolpak?

A: That has also been emulated.

Q: What about add-ins?

A: Add-in functions can be used, as well. However, in order to run the model on a different platform, you will need a library written for that platform that performs the same function as the Windows add-in.

Q: What about VBA?

A: Much, but not all, VBA code can be converted to C++ and compiled into the Calc4Web output file.

Q: Do I lose my spreadsheet?

A: No, Calc4Web's output does not overwrite your spreadsheet.

Q: Do I need to change my spreadsheets?

A: Almost never. There are a few special conditions which might require small changes, such as renaming certain sheets in a workbook. Some changes to VBA code may be required to allow them to work best with Calc4Web.

Q: How hard is it to use?

A: Not hard at all. Simply specify a few things, such as which cells are the model's inputs, which cell or cells hold the model results or outputs, what name to give the new model, and where to save the new files. Then, push a button and you're done.

Q: Does it only allow you to create functions that have a single output value?

A: No. The function can just as easily return a range, as an array formula. So Calc4Web is equally adept at generating functions to calculate a bond's price, or to generate all the dates and cash flows on the bond, as well.

Q: What about ranges for inputs?

A: That's not a problem, either. Every input can be either a single cell, or a range. And just as with Excel's built-in functions, it perfectly OK to mix them so that some inputs are single cells and the others are ranges.

Q: How long does it take to create new functions and faster spreadsheets?

A: It depends on the size of the workbook. A 4 megabyte workbook can be done in about 3 minutes. A workbook that's a few hundred kilobytes takes just a few seconds.

Q: I have programmers to convert my spreadsheets into C++ and give me all of Calc4Web's benefits. Why should I consider Calc4Web?

A:You can think of Calc4Web as an automated programmer. Except that it's a lot faster, it doesn't make mistakes as there’s no room for human error, it's cheaper, and it doesn't require the modeler's time to explain the algorithm.

Also, when you have a programmer convert the spreadsheet to C++, the auditors need to look at two things: the model, and the C++ implementation of it, since there can be errors introduced in either step. With Calc4Web, the code auditing is not necessary, which saves the auditor (and the auditee) a lot of time and aggravation. Better still, the auditor is more likely familiar with looking at spreadsheets than they are with C++ code, which ensures a more correct and timely audit, as well.

Q: What's the difference between the various editions of Calc4Web?

A: Calc4Web comes in four versions: Personal, Professional, Developer, and Server. We've summarized the capabilities of each version in a comparison chart.

The Personal Edition allows a developer to create a C++ DLL and Excel addin, and run the generated code on the same PC. The Professional Edition lets you view the generated code, and allows the generated DLL and Excel addin to be distributed and run on any other single user machine, with no runtime fees. The Developer Edition is like the Professional Edition, since the generated DLL and addin can be distributed and run on any other single user machine, with viewable source code, but it does not handle VBA, and only works on a single worksheet. The Server Edition is a runtime license to run the generated DLL and Excel addin on a single server machine (a server machine is defined as one which can be accessed by multiple users). The Professional and Developer Editions allow users to see the generated C++ code, while the Personal and Server Editions do not.

Q: Why didn't anyone else think of this before?

A: You'll have to ask everyone else.

Q: OK, this sounds like the greatest thing, since, well, Excel itself. How do I get my hands on it?

A: Call us at +1 212 742-8677, or email



"Once you’ve used Calc4Web, you may find that you simply can’t be without it."

Rick Grehan, InfoWorld

"It's not just cool. It's simple."

Tom Yager, InfoWorld

"With Calc4Web, I'm able to write sophisticated C++ programs in minutes using only an Excel spreadsheet. Doing it directly in C++ would take several days."

Jerome Montpetit, Risk Manager, Canadian Financial Institution

"A highly specialized tool that can bring significant benefits to some development tasks."

Peter Aitken, DevSource

"Calc4Web does just one thing: converts Excel spreadsheets and VBA to C++ DLLs and addins. But the implications of this, and it's myriad uses, are much more far-reaching in terms of latency reduction and productivity enhancement."

Andy Webb, e-FOREX

  Copyright 2004-2007, Options Unlimited Research Corp.