客户要求能导出多sheet的excel,这样就不用人工combine了。google一下,找到了一些solution。最后用了ActiveXObject的方案。原理是先把数据存在table里,再把table的数据装入excel。
要在Internet Options里把Security的Custom level的Initialize and script ActiveX controls not marked as safe for scripting设为Prompt/Enable。
同时客户端要装excel:)
function ExportToExcel()
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
var sHTML1,sHTML2,sHTML3,sHTML4,sHTML5,sHTML6,sHTML7,oExcel,oBook;
sHTML1 = document.all("TableSummary").outerHTML;
sHTML2 = document.all("TableToBeSubmitted").outerHTML;
sHTML3 = document.all("TableToBeCosted").outerHTML;
sHTML4 = document.all("TableToBeQuoted").outerHTML;
sHTML5 = document.all("TableToBeApproved").outerHTML;
sHTML6 = document.all("TableToBeSent").outerHTML;
sHTML7 = document.all("TableToBeDispositioned").outerHTML;
//Open excel application
oExcel = new ActiveXObject("Excel.Application");
//the excel opened has already 3 sheets by default
oBook1 = oExcel.Workbooks.Add();
//Add 4 more sheets
oBook1.Worksheets.Add();
oBook1.Worksheets.Add();
oBook1.Worksheets.Add();
oBook1.Worksheets.Add();
//Assign sheets to variables
var sheet1,sheet2,sheet3,sheet4,sheet5,sheet6,sheet7;
sheet1 = oBook1.Worksheets(1);
sheet2 = oBook1.Worksheets(2);
sheet3 = oBook1.Worksheets(3);
sheet4 = oBook1.Worksheets(4);
sheet5 = oBook1.Worksheets(5);
sheet6 = oBook1.Worksheets(6);
sheet7 = oBook1.Worksheets(7);
//Set sheet name
sheet1.Name = "Summary";
sheet2.Name = "ToBeSubmitted";
sheet3.Name = "ToBeCosted";
sheet4.Name = "ToBeQuoted";
sheet5.Name = "ToBeApproved";
sheet6.Name = "ToBeSent";
sheet7.Name = "ToBeDispositioned";
//Set content for each sheet
oBook1.HTMLProject.HTMLProjectItems(3).Text = sHTML1;
oBook1.HTMLProject.HTMLProjectItems(4).Text = sHTML2;
oBook1.HTMLProject.HTMLProjectItems(5).Text = sHTML3;
oBook1.HTMLProject.HTMLProjectItems(6).Text = sHTML4;
oBook1.HTMLProject.HTMLProjectItems(7).Text = sHTML5;
oBook1.HTMLProject.HTMLProjectItems(8).Text = sHTML6;
oBook1.HTMLProject.HTMLProjectItems(9).Text = sHTML7;
oBook1.HTMLProject.RefreshDocument();
oExcel.Visible = true;
oExcel.UserControl = true;
//optional,prompt to ask save when quit
////oExcel.ActiveWorkbook.SaveAs("C:\\TEST.XLS");
//quit excel app
//oExcel.Application.Quit();
//Close the excel.exe process
oExcel = null;
}