日期:2014-05-17  浏览次数:20873 次

按已有EXCEL表格式导出问题。
这是我的excel导出程序:
<SCRIPT   LANGUAGE= "javascript ">  
<!--  
function   AutomateExcel()  
{  
//   Start   Excel   and   get   Application   object.  
var   oXL   =   new   ActiveXObject( "Excel.Application ");  
//   Get   a   new   workbook.  
var   oWB   =   oXL.Workbooks.Add();  
var   oSheet   =   oWB.ActiveSheet;  
var   table   =   document.all.MainTable;  
var   hang   =   table.rows.length;  
var   lie   =   table.rows(0).cells.length;  
//   Add   table   headers   going   cell   by   cell.  
for   (i=0;i <hang;i++)  
{  
for   (j=0;j <lie;j++)  
{  
oSheet.Cells(i+1,j+1).value   =   table.rows(i).cells(j).innerText;  
}  

}  
oXL.Visible   =   true;  
oXL.UserControl   =   true;  
}  
//-->  
</SCRIPT>  


因导出时某个字段的数值非常的大,达到21位例如(175130250700000496),用以上程序导出为excel表时由于excel默认将这个字段的值认为是数字,所以自动变成了175130250700000000。现在请教大家有没有办法能导出到一个我以做好模板的excel文件中。因为我只要在excel文件中把相应的列改为文本格式这样导出时就不会出现这样的情况了。

------解决方案--------------------
一、使用OWC

  什么是OWC?

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

<%Option Explicit
Class ExcelGen
Private objSpreadsheet
Private iColOffset

Private iRowOffset
Sub Class_Initialize()
Set objSpreadsheet = Server.CreateObject( "OWC.Spreadsheet ")
iRowOffset = 2
iColOffset = 2
End Sub

Sub Class_Terminate()
Set objSpreadsheet = Nothing 'Clean up
End Sub

Public Property Let ColumnOffset(iColOff)
If iColOff > 0 then
iColOffset = iColOff
Else
iColOffset = 2
End If
End Property

Public Property Let RowOffset(iRowOff)
If iRowOff > 0 then
iRowOffset = iRowOff
Else
iRowOffset = 2
End If
End Property Sub GenerateWorksheet(objRS)
'Populates the Excel worksheet based on a Recordset 's contents
'Start by displaying the titles
If objRS.EOF then Exit Sub
Dim objField, iCol, iRow
iCol = iColOffset
iRow = iRowOffset
For Each objField in objRS.Fields
objSpreadsheet.Cells(iRow, iCol).Value = objField.Name
objSpreadsheet.Columns(iCol).AutoFitColumns
'设置Excel表里的字体
objSpreadsheet.Cells(iRow, iCol).Font.Bold = True
objSpreadsheet.Cells(iRow, iCol).Font.Italic = False
objSpreadsheet.Cells(iRow, iCol).Font.Size = 10
objSpreadsheet.Cells(iRow, iCol).Halignment = 2 '居中
iCol = iCol + 1
Next 'objField
'Display all of the data
Do While Not objRS.EOF
iRow = iRow + 1
iCol = iColOffset
For Each objField in objRS.Fields
If IsNull(objField.Value) then
objSpreadsheet.Cells(iRow, iCol).Value = " "
Else
objSpreadsheet.Cells(iRow, iCol).Value = objField.Value
objSpreadsheet.Columns(iCol).AutoFitColumns
objSpreadsheet.Cells(iRow, iCol).Font.Bold = False
objSpreadsheet.Cells(iRow, iCol).Font.It