In this post, I will use a C# .NET example instead.
Of cause first thing that you need to do is to add Excel.dll (Microsoft excel 11.0 Object Library) into your .NET project references.
Here is the codes:
private void ExportToExcelFile(System.Data.DataTable dt)
{
Excel.Application xlsApp = new Excel.ApplicationClass();
Excel.Workbook xlsWorkbook;
Excel.Worksheet xlsWorksheet;
string strhdr;
int row;
string strFile = "file1.xls";
string filename = Server.MapPath(strFile);
if (dt.Rows.Count > 0)
{
//Create new workbook
xlsWorkbook = xlsApp.Workbooks.Add(true);
//Get the first worksheet
xlsWorksheet = (Excel.Worksheet)(xlsWorkbook.Worksheets[1]);
//Activate current worksheet
xlsWorksheet.Activate();
//Set header row to row 1
row = 1;
//Add table headers to worksheet
xlsWorksheet.Cells[row, 1] = "Name";
xlsWorksheet.Cells[row, 2] = "Gender";
xlsWorksheet.Cells[row, 3] = "Age";
//Format header row (bold, extra row height, autofit width)
xlsWorksheet.get_Range("A" + row.ToString(), "C" + row.ToString()).Font.Bold = true;
xlsWorksheet.get_Range("A" + row.ToString(), "C" + row.ToString()).Rows.RowHeight = 1.5 * xlsWorksheet.StandardHeight;
xlsWorksheet.get_Range("A" + row.ToString(), "C" + row.ToString()).EntireRow.AutoFit();
//Freeze the columm headers
xlsWorksheet.get_Range("A" + (row + 1).ToString(), "C" + (row + 1).ToString()).Select();
xlsApp.ActiveWindow.FreezePanes = true;
//Write data to Excel worksheet
foreach (DataRow dr in dt.Rows)
{
row += 1;
if (dr["Name"] != null)
xlsWorksheet.Cells[row, 1] = dr["Name"];
if (dr["Gender"] != null)
xlsWorksheet.Cells[row, 2] = dr["Gender"];
if (dr["Age"] != null)
xlsWorksheet.Cells[row, 3] = dr["Age"];
}
//Format data rows (align to center and left, autofit width and height)
xlsWorksheet.get_Range("A2", "C" + row.ToString()).VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;
xlsWorksheet.get_Range("A2", "C" + row.ToString()).HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;
xlsWorksheet.get_Range("A2", "c" + row.ToString()).EntireColumn.AutoFit();
xlsWorksheet.get_Range("A2", "c" + row.ToString()).EntireRow.AutoFit();
//Make excel workbook visible to user after all data has been added to worksheet.
xlsApp.DisplayAlerts = false;
xlsWorkbook.Close(true, filename, null);
//Export data to client machine
strhdr = "attachment;filename=" + strFile;
Response.Clear();
Response.ContentType = "application/vnd.ms-excel";
Response.ContentEncoding = System.Text.Encoding.Default;
Response.AppendHeader("Content-Disposition",strhdr);
Response.WriteFile(filename);
Response.Flush();
Response.Clear();
Response.Close();
}
}
Cheers!
12 comments:
Hats off!!!!!
Marvelous work...
Congratulations! You got your work done.
Hi i am using
"Microsoft Excel 12.0 Object Library",
i am Opening excel sheet after downloading that excel sheet and again uploading that downloaded excel sheet getting error
"External Table is not in the Correct Format"
Can u help me in this problem
Thanks
Amarnath Mitta
Hi Amarnath Mitta,
One of the possibilities is the xls file you have was exported in HTML format with XLS extension.
Try to change the Extended Properties= Excel 8.0 to Extended Properties=HTML Import.
Hope this will help.
Hi sir
This is Amar can u give ur gmail id
amarmitta@gmail.com this is my gmail
Hi
I am using your code for downloading excel format but when i am opening excel Sheet Getting Error
The file You are trying to open,"EasyIf.xll",is i different format than specified by the file extension.verift that the file is not corrupted and is from a trusted source before opening the file.Do you want open the file now.Dialog Box will appear with Yes No Cancel
when we Click on yes it will open EasyIf.Xll{ReadOnly] with dialog box when we click on Yes Excel sheet will open.
when downloading that excel sheet Getting error
External Data is not in the Correct Format.please help me in this
Thanks
Amarnath Mitta
Hi sir
if it is possible can give u r code for uploading Excel.
Atually my req is
1)Uploading Excel Sheet and then importing data into Sqlserver2005
2)Updating all records with Status
3)Getting that records to Datatable and then converted to excel
4)That exel Should Download,user can do changes on that excel.
5)Again uploading that Changes excel into database.
Thanks
Amarnath Mitta
SofwareEngineer
Hyderabad
Hi
By using this code, after downloading to excel format automatically it is inserting into present dotnet working folder,
I dont want to insert that excel files into folder,how can we remove that excel files from working folder.
please suggest me
Thanks
Amarnath Mitta
Hi Amarnath Mitta,
Current.Response.ContentType = "application/vnd.ms-excel"
HttpContext.Current.Response.AddHeader("content-disposition",
"attachment;filename=ABC.xls")
HttpContext.Current.Response.Write(strHTML)
HttpContext.Current.Response.End()This will do, but exported as HTML format.
Any other problems please drop me a mail at ejuly07@gmail.com
july
Hi,
i am using MS Excel 2007 or MS Excel 2003.
No problem at MS Excel 2003.
I am downloading that excel sheet (.xls) and again uploading to MS SQL Server 2008 that downloaded excel sheet getting error
"External Table is not in the Correct Format"
Can u help me in this problem?
also, I can't open in MS Excel 2007. I got this error
"The file You are trying to open,"export.xls",is i different format than specified by the file extension.verift that the file is not corrupted and is from a trusted source before opening the file.Do you want open the file now.Dialog Box will appear with Yes No Cancel"
Pls help me. Thanks
Chaw
Hi Chaw,
This error generally occurs if the excel file you are trying to connect is not in a valid format, e.g. the excel file might be in HTML format.
july
what is code it is giving me
Excel.ApplicationClass() System.Security.Permissions.SecurityPermission error , i can not use it.
Next it is saying ambigous datatable error . How to call the
ExportToExcelFile(System.Data.DataTable dt) on button click event if i am using a datatable from dataset.
Please help otherwise this code is not of any use for me.I need export to excel multiple sheets badly.
Post a Comment