views:

385

answers:

1

We generate an Excel spreadsheet in our C# .net website by writing out an HTML table to Response. This works great, but the sheet name gets set to the same as the file name.

Is there away to set this? We require a certain sheet name when importing.

Code:

string filename = String.Format( "{0}-CopyDataBack_{1}.xls", Master.EventID.ToString(), DateTime.Now.ToString( "dd-MM-yy_HHmm" ) );

Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("content-disposition", "attachment;filename=" + filename );
Response.Charset = "";
this.EnableViewState = false;

System.Text.StringBuilder tableOut = new System.Text.StringBuilder();
// ... Create an HTML table in a StringBuilder ...
Response.Write( tableOut );
Response.End();
+1  A: 

By creating a table and setting content-type to Excel you can't define a worksheet name, nor to create more worksheets.

You can to generate your complete Excel workbook by using OpenXML SDK, but your client will need to handle Office 2007 file formats by using Microsoft Office Compatibility Pack for Word, Excel, and PowerPoint 2007 File Formats.

Rubens Farias
Or you can use the old SpreadsheetML file type, but then you're restricted when it comes to charts and so on. Here's a reference: http://msdn.microsoft.com/en-us/library/bb226687(office.11).aspx
Ant
@Ant, nice catch, ty
Rubens Farias
np :) The problem I find with comments, is that when you write them, you totally forget to upvote the answer (if applicable)!
Ant
belongs to meta ;-)
Rubens Farias