把数据保存为EXCEL的问题

arfeng75 2005-09-27 03:04:24
当我把数据库里的数据保持为EXCEL文件时,如果数据库里有一个字段的内容为“350206612024468”,当保存在EXCEL文件里时,就自动变成了科学计数法,内容变成了“3.50207E+14”

我想是在程序里实现,比方:
objSpreadsheet.Cells(iRow, iCol).Font.Bold = True //可以设置单元格字体为粗体。
但是我不知道用什么方法设置单元格为文本。

请高手帮忙这个问题怎么解决?
...全文
262 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengloveyan 2005-09-28
  • 打赏
  • 举报
回复
看来我还差点
itzhiren 2005-09-28
  • 打赏
  • 举报
回复
能看看你的调用代码么?
itzhiren 2005-09-28
  • 打赏
  • 举报
回复
怎么我调用你这个过程,总是出错呢?你那儿能运行么?
itzhiren 2005-09-28
  • 打赏
  • 举报
回复
iCol = iColOffset
iRow = iRowOffset
//////////////////////////
iColOffset和iRowOffset是从哪儿来的?
hcz0663 2005-09-28
  • 打赏
  • 举报
回复
最近估计也要写这样的程序了,先占个位置学习。
arfeng75 2005-09-28
  • 打赏
  • 举报
回复
楼上的。这样也不行啊。直接把 插到EXCEL里去了。而不是空格
itzhiren 2005-09-28
  • 打赏
  • 举报
回复
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
ExlData =" "& objField.value & ""
objSpreadsheet.Cells(iRow, iCol).Value = ExlData
objSpreadsheet.Columns(iCol).AutoFitColumns
objSpreadsheet.Cells(iRow, iCol).Font.Bold = False
objSpreadsheet.Cells(iRow, iCol).Font.Italic = False
objSpreadsheet.Cells(iRow, iCol).Font.Size = 10
'objSpreadsheet.Cells(iRow, iCol).Halignment = 1 '居中
End If
iCol = iCol + 1
Next 'objField

objRS.MoveNext
Loop

End Sub
arfeng75 2005-09-28
  • 打赏
  • 举报
回复
再UP,看有没有人知道
arfeng75 2005-09-28
  • 打赏
  • 举报
回复
up
arfeng75 2005-09-28
  • 打赏
  • 举报
回复
<%
//首先建立一个rs对象。然后调用下面的代码。
Dim ExlData

server.ScriptTimeout=300
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
ExlData = objField.value & ""
objSpreadsheet.Cells(iRow, iCol).Value = ExlData
objSpreadsheet.Columns(iCol).AutoFitColumns
objSpreadsheet.Cells(iRow, iCol).Font.Bold = False
objSpreadsheet.Cells(iRow, iCol).Font.Italic = False
objSpreadsheet.Cells(iRow, iCol).Font.Size = 10
'objSpreadsheet.Cells(iRow, iCol).NumberFormatLocal = "(0.00_);(0.00)"
End If
iCol = iCol + 1
Next 'objField

objRS.MoveNext
Loop

End Sub


Function SaveWorksheet(strFileName)
'Save the worksheet to a specified filename
On Error Resume Next
Call objSpreadsheet.ActiveSheet.Export(strFileName, 0)

SaveWorksheet = (Err.Number = 0)
End Function

End Class

Dim SaveName
SaveName = year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)

Dim objExcel
Dim ExcelPath
ExcelPath = "db/" & SaveName & ".xls"
Set objExcel = New ExcelGen

objExcel.RowOffset = 1
objExcel.ColumnOffset = 1

objExcel.GenerateWorksheet(objRS)
if FlagDL= 1 then
If objExcel.SaveWorksheet(Server.MapPath(ExcelPath)) then
Response.Write "<html><body bgcolor='gainsboro' text='#000000'>已保存为Excel文件. <a href=javascript:openwin('" & server.URLEncode(ExcelPath) & "')>下载</a> (右键,目标另存为,能保存下来)"
Else
Response.Write "在保存过程中有错误!"
End If
end if
Set objExcel = Nothing
%>
arfeng75 2005-09-27
  • 打赏
  • 举报
回复
Microsoft VBScript 运行时错误 错误 '800a01b6'

对象不支持此属性或方法: 'objSpreadsheet.Cells(...).NumberFormatLocal'

/report/excel.asp,行 83


不可以啊!
wanghui0380 2005-09-27
  • 打赏
  • 举报
回复
objSpreadsheet.Cells(iRow, iCol).NumberFormatLocal = "0.00_);(0.00)"
看看成不成
arfeng75 2005-09-27
  • 打赏
  • 举报
回复
郁闷。。。。。。。
arfeng75 2005-09-27
  • 打赏
  • 举报
回复
没办法了吗?各位!
arfeng75 2005-09-27
  • 打赏
  • 举报
回复
加"'"号不行啊。那就不能进行数据统计了
wanghui0380 2005-09-27
  • 打赏
  • 举报
回复
如果是这种导出的话,在字段内容前面加一个'号
如 :ExlData = "'"+objField.value
arfeng75 2005-09-27
  • 打赏
  • 举报
回复
我加了空格啊。
ExlData = objField.value & " "
ExlData = " " objField.value & " "
这样都试了。还是不可以。

如果这样:ExlData = objField.value & " "
EXCEL里输出的不是空格,而是把字符&bnsp;都输出来了。

itzhiren 2005-09-27
  • 打赏
  • 举报
回复
你在字段内容前面加一个空格就可以了
arfeng75 2005-09-27
  • 打赏
  • 举报
回复
"style=vnd.ms-excel.numberformat:@"
请问这句话加在哪里?我试了下不行啊。
plghqr 2005-09-27
  • 打赏
  • 举报
回复
这里面就有保存到excel的代码,
http://community.csdn.net/Expert/topic/4270/4270153.xml?temp=.7997705
如果不想出现科学记数法,在其前或后加入空格,excel会把该字段认为是字符的
加载更多回复(2)

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧