Resolver Hacks contains information and code for doing fun and useful things with Resolver One. This site is created and maintained by Michael Foord, not by Resolver Systems. Please read the disclaimer before using any of the code on this site.
Articles and Information

| Articles and Spreadsheets | |
|---|---|
| Getting Started | |
| Articles | |
| Spreadsheets And Code | |
This sections contain articles about Resolver. This includes information about Resolver, as well as code and spreadsheets that illustrate how to do interesting things.
Getting Started
- A Simple Example Spreadsheet
This article centres around a simple example spreadsheet, for managing accounts. The data (income and outgoings) is entered in the 'traditional' way, and a cell range is created from user code to format the summary.
- Spreadsheet Functions
How to implement spreadsheet functions yourself. These are sometimes needed for compatibility with spreadsheets you have imported, and are usually easy to write. Adding new functions that you can use inside formulae is also one of the easiest ways that you can get started with extending Resolver through user code.
- Silly Colors
The most powerful feature of Resolver, is that you can add user code to your spreadsheets to collect, analyse and present your data. This code can take advantage of both the .NET framework libraries and the Python standard library. This article is a very short example of a spreadsheet that does this.
- Python, IronPython and all that...
The best thing about Resolver is the way that spreadsheets are fully integrated with user code, making it possible to customize them any way you want. This is a brief introduction to the language behind user code; Python, IronPython and all that...
Articles
- Developing Resolver
The development techniques used to write Resolver have played a vital part in ensuring the quality of the program. They are slightly unusual; this article explains some of the processes used to create Resolver and why they are important.
- Bugs, Features and Futures
Resolver is a young program, but one with enormous potential. This article talks about some of the features that Resolver doesn't yet have, a few bugs that you might want to avoid, and most importantly: some of the new things that Resolver might be able to do in the future.
- Recalculation and Threads (IMPORTANT)
Resolver calculates spreadsheets in a background thread. This keeps the user interface responsive, but means that there are a few minor things you might need to do to keep your code safe.
- Resolver: What and Why?
What is Resolver, and why does it exist? This article gives a brief overview of Resolver and its features - plus the rationale behind creating Resolver.
- So You Want Your IDE Back?
Resolver is a great combination of spreadsheet and Integrated Development Environment, but what if you would rather use a Python IDE or text editor for working on your Python code? This article will show you one way you can achieve that.
Spreadsheets And Code
- Caching Data Across Recalculations
Sometimes you generate data that you want to keep in between recalculations. Resolver doesn't have a built-in way of doing this, but this article presents a simple solution.
- Exotic and Custom Data Types
With Resolver you aren't limited to numbers, dates and text - you can store anything you want in cells, including any of the rich set of built-in types that Python provides. You can also create custom types for representing data.
- Fetching Data From the Web
Including data from several different sources is one of the best ways to illustrate the power of Resolver. This is an example of fetching data (historical exhange rates) from the internet, and creating a chart (using ZedGraph).
- Charting with Gnuplot
Gnuplot is an advanced plotting program, capable of producing an enormous range of different charts. This article shows how to interface Resolver to external programs (launched as a subprocess), using gnuplot as the example.
- Persistent Cells and Worksheets
Two example spreadsheets showing how to save and load values to the disk, to be reloaded with a spreadsheet. This is useful for storing the results of calculations that take a long time, so that they only need to be done once rather than every recalc or every time the spreadsheet is loaded. The first example shows how to persist individual cells and the second extends this to storing every value in a worksheet.
- Resolverforge
Resolverforge provides a way of automatically downloading modules used by your spreadsheet, through the use of the require function. You can use the modules I've put up at www.resolverhacks.net/resolverforge, or create your own repository on the internet or an intranet.
- Testing Spreadsheet Logic
One consequence of Resolver spreadsheets being a program, is that it makes it possible to test them. This article looks at testing spreadsheet logic (formulae and user code) using a pattern from programming called unit testing. It uses the 'Export as Python Class' feature from Resolver.
- Publishing Spreadsheets to the Web
Spreadsheets are usually about presenting information. Here we look at turning a Resolver spreadsheet into HTML (web pages) by taking advantage of the 'Export as Python' feature. It provides, both a useful tool plus shows how to interact with spreadsheet code from a system external to Resolver.
- Triggering Recalculations
Resolver has a useful feature called database trigger listeners. This allows you to trigger a recalculation when a database is updated or changed. We can (ab)use this feature to allow us to trigger a recalculation from any external application. It finishes with a practical example of watching a data file, and reloading it when it changes.
- Charting with ZedGraph: A Basic Introduction
ZedGraph is a powerful and free charting solution for .NET. This article is an introduction to using ZedGraph with Resolver for producing charts and graphs.
Last edited Mon Dec 10 00:12:45 2007.

IronPython in Action