ASP导出Excel数据的四种方法

 一、使用OWC

  什么是OWC?

  OWC是Office Web Compent的缩写,即Microsoft的Office Web组件,它为在Web中绘制图形提供了灵活的同时也是最基本的机制。在一个intranet环境中,如果可以假设客户机上存在特定的浏览器和一些功能强大的软件(如IE5和Office 2000),那么就有能力利用Office Web组件提供一个交互式图形开发环境。这种模式下,客户端工作站将在整个任务中分担很大的比重。

  1 None.gif <% Option   Explicit  
  2 None.gifClass ExcelGen 
  3 None.gif Private  objSpreadsheet 
  4 None.gif Private  iColOffset 
  5 None.gif
  6 None.gif Private  iRowOffset 
  7 None.gif Sub  Class_Initialize() 
  8 None.gif Set  objSpreadsheet  =  Server. CreateObject ( " OWC.Spreadsheet "
  9 None.gifiRowOffset  =   2  
 10 None.gifiColOffset  =   2  
 11 None.gif End Sub  
 12 None.gif
 13 None.gif Sub  Class_Terminate() 
 14 None.gif Set  objSpreadsheet  =   Nothing   ' Clean up 
 15 None.gif End Sub  
 16 None.gif
 17 None.gif Public   Property   Let  ColumnOffset(iColOff) 
 18 None.gif If  iColOff >  0   then  
 19 None.gifiColOffset  =  iColOff 
 20 None.gif Else  
 21 None.gifiColOffset  =   2  
 22 None.gif End   If  
 23 None.gif End Property  
 24 None.gif
 25 None.gif Public   Property   Let  RowOffset(iRowOff) 
 26 None.gif If  iRowOff >  0   then  
 27 None.gifiRowOffset  =  iRowOff 
 28 None.gif Else  
 29 None.gifiRowOffset  =   2  
 30 None.gif End   If  
 31 None.gif End Property   Sub  GenerateWorksheet(objRS) 
 32 None.gif ' Populates the Excel worksheet based on a Recordset's contents 
 33 None.gif' Start by displaying the titles 
 34 None.gif If  objRS.EOF  then   Exit   Sub  
 35 None.gif Dim  objField, iCol, iRow 
 36 None.gifiCol  =  iColOffset 
 37 None.gifiRow  =  iRowOffset 
 38 None.gif For   Each  objField in objRS.Fields 
 39 None.gifobjSpreadsheet.Cells(iRow, iCol).Value  =  objField.Name 
 40 None.gifobjSpreadsheet.Columns(iCol).AutoFitColumns 
 41 None.gif ' 设置Excel表里的字体 
 42 None.gif objSpreadsheet.Cells(iRow, iCol).Font.Bold  =   True  
 43 None.gifobjSpreadsheet.Cells(iRow, iCol).Font.Italic  =   False  
 44 None.gifobjSpreadsheet.Cells(iRow, iCol).Font.Size  =   10  
 45 None.gifobjSpreadsheet.Cells(iRow, iCol).Halignment  =   2   ' 居中 
 46 None.gif iCol  =  iCol  +   1  
 47 None.gif Next   ' objField 
 48 None.gif' Display all of the data 
 49 None.gif Do   While   Not  objRS.EOF 
 50 None.gifiRow  =  iRow  +   1  
 51 None.gifiCol  =  iColOffset 
 52 None.gif For   Each  objField in objRS.Fields 
 53 None.gif If   IsNull (objField.Value)  then  
 54 None.gifobjSpreadsheet.Cells(iRow, iCol).Value  =   ""  
 55 None.gif Else  
 56 None.gifobjSpreadsheet.Cells(iRow, iCol).Value  =  objField.Value 
 57 None.gifobjSpreadsheet.Columns(iCol).AutoFitColumns 
 58 None.gifobjSpreadsheet.Cells(iRow, iCol).Font.Bold  =   False  
 59 None.gifobjSpreadsheet.Cells(iRow, iCol).Font.Italic  =   False  
 60 None.gifobjSpreadsheet.Cells(iRow, iCol).Font.Size  =   10  
 61 None.gif End   If  
 62 None.gifiCol  =  iCol  +   1  
 63 None.gif Next   ' objField 
 64 None.gif objRS.MoveNext 
 65 None.gif Loop  
 66 None.gif End Sub   Function  SaveWorksheet(strFileName) 
 67 None.gif
 68 None.gif ' Save the worksheet to a specified filename 
 69 None.gif On   Error   Resume   Next  
 70 None.gif Call  objSpreadsheet.ActiveSheet.Export(strFileName,  0
 71 None.gifSaveWorksheet  =  (Err.Number  =   0
 72 None.gif End Function  
 73 None.gif End  Class 
 74 None.gif
 75 None.gif Dim  objRS 
 76 None.gif Set  objRS  =  Server. CreateObject ( " ADODB.Recordset "
 77 None.gifobjRS.Open  " SELECT * FROM xxxx " " Provider=SQLOLEDB.1;Persist Security 
 78 None.gif
 79 None.gif Info = True ;User ID = xxxx;Password = xxxx;Initial Catalog = xxxx;Data source = xxxx; "  
 80 None.gif Dim  SaveName 
 81 None.gifSaveName  =  Request.Cookies( " savename " )( " name "
 82 None.gif Dim  objExcel 
 83 None.gif Dim  ExcelPath 
 84 None.gifExcelPath  =   " Excel\ "   &  SaveName  &   " .xls "  
 85 None.gif Set  objExcel  =   New  ExcelGen 
 86 None.gifobjExcel.RowOffset  =   1  
 87 None.gifobjExcel.ColumnOffset  =   1  
 88 None.gifobjExcel.GenerateWorksheet(objRS) 
 89 None.gif If  objExcel.SaveWorksheet(Server.MapPath(ExcelPath))  then  
 90 None.gif ' Response.Write "<html><body bgcolor='gainsboro' text='#000000'>已保存为Excel文件. 
 91 None.gif
 92 None.gif<a href = ' " & server.URLEncode(ExcelPath) & "'>下载</a>" 
 93 None.gif Else  
 94 None.gifResponse.Write  " 在保存过程中有错误! "  
 95 None.gif End   If  
 96 None.gif Set  objExcel  =   Nothing  
 97 None.gifobjRS.Close 
 98 None.gif Set  objRS  =   Nothing  
 99 None.gif%>  
100 None.gif
101 None.gif

  二、用Excel的Application组件在客户端导出到Excel或Word

  注意:两个函数中的“data“是网页中要导出的table的 id

<input type="hidden" name="out_word" οnclick="vbscript:buildDoc" value="导出到word" class="notPrint">
<input type="hidden" name="out_excel" οnclick="AutomateExcel();" value="导出到excel" class="notPrint"> 

 

None.gif <SCRIPT LANGUAGE = " javascript " > 
None.gif
!--  
None.gif
function  AutomateExcel() 
None.gif
None.gif
//  Start Excel and get Application object. 
None.gif
var  oXL  =   new  ActiveXObject( " Excel.Application " ); 
None.gif
//  Get a new workbook. 
None.gif
var  oWB  =  oXL.Workbooks.Add(); 
None.gif
var  oSheet  =  oWB.ActiveSheet; 
None.gif
var  table  =  document.all.data; 
None.gif
var  hang  =  table.rows.length; 
None.gif
None.gif
var  lie  =  table.rows( 0 ).cells.length; 
None.gif
None.gif
//  Add table headers going cell by cell. 
None.gif
for  (i = 0 ;i<hang;i ++
None.gif
None.gif
for  (j = 0 ;j<lie;j ++
None.gif
None.gifoSheet.Cells(i
+ 1 ,j + 1 ).value  =  table.rows(i).cells(j).innerText; 
None.gif
None.gif
None.gif
None.gifoXL.Visible 
=   true
None.gifoXL.UserControl 
=   true
None.gif
None.gif
// --> 
None.gif
/ SCRIPT>  
None.gif

2. 导出到Excel代码

<script language="javascript">
function exportExcel(atblData)
{
 if (typeof(EXPORT_OBJECT)!="object")
   {
     document.body.insertAdjacentHTML("afterBegin","<OBJECT style='display:none' classid=clsid:0002E510-0000-0000-C000-000000000046 id=EXPORT_OBJECT></Object>");
   }
 with (EXPORT_OBJECT){
          DataType = "HTMLData";
          HTMLData =atblData.outerHTML;
      try{
           ActiveSheet.Export("C:\\sortTEL.xls",0);
  alert('导出EXCEL文档完毕');
          }
  catch (e)
  {
               alert('导出Excel表失败,请确定已安装Excel2000(或更高版本),并且没打开同名xls文件');
  }
            }
 }
</script>
<center><input type="button" value="导出以上数据为Excel文档" οnclick="exportExcel(tblData)"></center>

 

  导出到Word代码

None.gif <script language = " vbscript " > 
None.gifSub buildDoc 
None.gifset table 
=  document.all.data 
None.gifrow 
=  table.rows.length 
None.gifcolumn 
=  table.rows( 1 ).cells.length 
None.gif
None.gifSet objWordDoc 
=  CreateObject( " Word.Document "
None.gif
None.gifobjWordDoc.Application.Documents.Add theTemplate, False 
None.gifobjWordDoc.Application.Visible
= True 
None.gif
None.gifDim theArray(
20 , 10000
None.gif
for  i = 0  to row - 1  
None.gif
for  j = 0  to column - 1  
None.giftheArray(j
+ 1 ,i + 1 =  table.rows(i).cells(j).innerTEXT 
None.gifnext 
None.gifnext 
None.gifobjWordDoc.Application.ActiveDocument.Paragraphs.Add.Range.InsertBefore(
" 综合查询结果集 " // 显示表格标题 
None.gif

None.gifobjWordDoc.Application.ActiveDocument.Paragraphs.Add.Range.InsertBefore(
""
None.gifSet rngPara 
=  objWordDoc.Application.ActiveDocument.Paragraphs( 1 ).Range 
None.gifWith rngPara 
None.gif.Bold 
=  True  // 将标题设为粗体 
None.gif
.ParagraphFormat.Alignment  =   1   // 将标题居中 
None.gif
.Font.Name  =   " 隶书 "   // 设定标题字体 
None.gif
.Font.Size  =   18   // 设定标题字体大小 
None.gif
End With 
None.gifSet rngCurrent 
=  objWordDoc.Application.ActiveDocument.Paragraphs( 3 ).Range 
None.gifSet tabCurrent 
=  ObjWordDoc.Application.ActiveDocument.Tables.Add(rngCurrent,row,column) 
None.gif
None.gif
for  i  =   1  to column 
None.gif
None.gifobjWordDoc.Application.ActiveDocument.Tables(
1 ).Rows( 1 ).Cells(i).Range.InsertAfter theArray(i, 1
None.gifobjWordDoc.Application.ActiveDocument.Tables(
1 ).Rows( 1 ).Cells(i).Range.ParagraphFormat.alignment = 1  
None.gifnext 
None.gifFor i 
= 1  to column 
None.gifFor j 
=   2  to row 
None.gifobjWordDoc.Application.ActiveDocument.Tables(
1 ).Rows(j).Cells(i).Range.InsertAfter theArray(i,j) 
None.gifobjWordDoc.Application.ActiveDocument.Tables(
1 ).Rows(j).Cells(i).Range.ParagraphFormat.alignment = 1  
None.gifNext 
None.gifNext 
None.gif
None.gifEnd Sub 
None.gif
/ SCRIPT>  
None.gif
None.gif

  三、直接在IE中打开,再存为EXCEL文件

  把读出的数据用<table>格式,在网页中显示出来,同时,加上下一句即可把EXCEL表在客客户端显示。

<%response.ContentType ="application/vnd.ms-excel"%> 

  注意:显示的页面中,只把<table>输出,最好不要输出其他表格以外的信息。

  四、导出以半角逗号隔开的csv

  用fso方法生成文本文件的方法,生成一个扩展名为csv文件。此文件,一行即为数据表的一行。生成数据表字段用半角逗号隔开。(有关fso生成文本文件的方法,在此就不做介绍了)

  CSV文件介绍 (逗号分隔文件)

  选择该项系统将创建一个可供下载的CSV 文件; CSV是最通用的一种文件格式,它可以非常容易地被导入各种PC表格及数据库中。

  请注意即使选择表格作为输出格式,仍然可以将结果下载CSV文件。在表格输出屏幕的底部,显示有 "CSV 文件"选项,点击它即可下载该文件。

  如果您把浏览器配置为将您的电子表格软件与文本(TXT)/逗号分隔文件(CSV) 相关联,当您下载该文件时,该文件将自动打开。下载下来后,如果本地已安装EXCEL,点击此文件,即可自动用EXCEL软件打开此文件。

转载于:https://www.cnblogs.com/Spring/archive/2005/07/07/187889.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值