While this approach may work, it has four major drawbacks:
1. The Excel-style interactivity is lost - all you get is a boring array of rows and columns inside an HTML table. You can't have live charts and diagrams.
2. The spreadsheet data becomes static. Later if you edit your original spreadsheet data, you'll have to redo the entire HTML to keep the webpage data in sync with the actual spreadsheet.
3. It is so tough [if not impossible] to select tabular data from an HTML table - the text formatting, font colors, sizes, and other visual enhancements are completely lost when copy that data from a webpage to another spreadsheet.
4. Site visitors cannot edit the HTML table data unless they copy-paste that to another spreadsheet inside Excel. They can't do calculations, add-delete cells, etc which are so basic to any spreadsheet.
So here's the complete workaround ?
To embed a Microsoft Excel spreadsheet into a HTML-page that closely mimicks an online version of Excel [in terms of interactivity, formatting, selection capabilities], we will make use of an excellent web spreadsheets service called ZohoSheets. Here's a step-by-step process:

Step 1: Import an existing xls spreadsheet or create one from scratch inside Zoho Sheets zohosheet.com
Step 2: Once your spreadsheet is ready for sharing, click the Publish Menu and choose "Make Public & Embed"

Step 3: You will get a small snippet of HTML IFRAME code which can be added either in your blog posts or onto your webpages. You can also modify the height/width of the embedded spreadsheet to fit your site layout.
That's it. Your site visitors can work on this embedded sheet just like they are working on the desktop version of Microsoft Excel. It can even perform calculations, multiple cell selections and text formatting like bold or italic text.
Your readers will love the fact that these embedded spreadsheets can be directly saved on the local hard-drive as a Microsoft Excel document at the click of the button. And the price is so reasonable. Zero dollars.
The only concern I have with Zohosheets is that they take a while to load and the spreadsheets become available in the public domain of Zoho website as soon as you make them public.
Find this article at: http://labnol.blogspot.com/2006/09/embed-interactive-excel-spreadsheets.html
web: http://www.labnol.org/ email: amit@labnol.org

Reader Comments
do the changes in the spreadsheet get stored? it is some sort of collaborative thing, or the changes are just for each individual?
Written on 18/9/06 10:44 AM
Wondering why you talked about Zoho and not Google Spreadsheets.
Written on 18/9/06 7:26 AM
@Peeyush - The problem with Google spreadsheets is that you require a Google account even to view a public sheet.
@bernat - No the changes are not saved on the central spreadsheet.
Written on 18/9/06 11:16 AM
@Peeyush - To view Google spreadsheets you need to have an google account.
You can even embed charts from Zoho Sheet as well as the drawn charts would also get displayed in this sheet widget.
Lots more coming,
Rajesh Segu
Written on 18/9/06 12:56 PM
Thanks for this wonderful and useful blogpost Amit. We are constantly working on the performance of the sheet widget as there are lots of js/HTML thats required to be loaded for an interactive sheet widget. By the way, we do have plans on embedding a private sheet.
Rajesh Segu
Zoho productivity apps @ www.zoho.com
Written on 18/9/06 12:44 PM
Hi Amit,
Please see this entry in our blogs, which gives a similar perspective on embedding spreadsheets. Without a doubt, our users will find your post on this topic very useful.
Thank you.
Written on 18/9/06 10:50 PM
SpreadsheetConverter to HTML/JavaScript creates a standalone calculating web page from an Excel workbook. Since it is standard HTML form, it loads very fast, no server needed. All calculations done in the browser.
If you want to test it, just send an email to support@spreadsheetconverter.com and you will get your web page back.
Written on 29/12/06 6:23 PM
There is another serious concern. If your web page wants to make use of the data within the spreadsheet, then there is an API (e.g. JSON) to obtain this information, but this data is not directly available to the containing page since it is in an IFRAME from another domain. That means that every time you want to do something with the spreadsheet locally, you are forced to make a hit to the server, which can be restrictive in many situations (e.g. a weak wireless connection). The appropriate solution is to have the spreadsheet be an accessible object within the page instead of within an iframe.
Written on 25/4/07 5:01 PM