asp操作Excel的两个问题
server.scripttimeout=100000
on error resume next
Set xlApp = CreateObject("Excel.Application")
xlApp.DisplayAlerts = false
xlApp.Application.Visible = false
xlApp.WorkBooks.add
set xlBook=xlApp.ActiveWorkBook
set xlSheets=xlBook.WorkSheets
set xlSheet=xlBook.Sheets(1)
……
xlSheet.cells(i,j).value="……"
xlSheet.cells(i,j).font.size="……"
……
xlBook.SaveAs userid&".xls"
set xlsheet=nothing
set xlBook=nothing
xlApp.Quit
set xlApp=nothing
xlname=userid&".xls"
response.Redirect(xlname)
在用上面的方法操作Excel时出现两个问题:
1:当xlSheet.cells(i,j).value的值为数字类型时,数字都是靠右对齐的,有什么方法能设置成默认靠左的?
2:当在一台机子上同时打开两个以上的该页面时,就出出现死循环,Excel.exe进程占CUP近100%,这个问题又如何解决呀。
问题点数:50、回复次数:9Top
1 楼crore(阿慧南)回复于 2005-12-07 17:53:47 得分 5
1:试试看后边加个空格!
或者在前面 "'" 好像可以转换为 字符
2: Excel.Application 不允许同时打开2个同名的excel 文件.要不一定死了!Top
2 楼wangwuyou(天厌地弃)回复于 2005-12-07 18:30:02 得分 0
1:真接加"" 没有用,倒是加了chr(13)后可以了。
我用 xlSheet.cells(x,y).Halignment=2 设置居中对齐,没有什么用,有什么错误吗
2:我在山东移动的网站上见过,不是同时打开多个,而是打开下一个时,上一个页面内容就变为空的了,不过那是用JSP做的,不知怎么实现。Top
3 楼hongzi001179(雄)回复于 2005-12-07 18:33:22 得分 0
我也想知道!Top
4 楼wangwuyou(天厌地弃)回复于 2005-12-08 08:11:26 得分 0
没有高手指点咯……Top
5 楼wangwuyou(天厌地弃)回复于 2005-12-09 10:25:54 得分 0
唉!!!!Top
6 楼yousite1(国雾)回复于 2005-12-09 10:34:11 得分 40
试试这个行不行?
xlSheet.cells(i,j).HorizontalAlignment= 3 '居中对齐
至于其它对齐方式值为多少,你可以在excel操作的时侯录制成宏再查看宏代码,就差不多了。
如果是常量的就msgbox xzxx调试一下就可以看出来了。
下面我给你个我写的代码作示例。Top
7 楼yousite1(国雾)回复于 2005-12-09 10:35:09 得分 0
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!--#include file="../inc/mdconn.asp"-->
<%dim rst
assureNo=trim(request("assureNo"))
assureNo=replace(assureNo,"'","")
assureNo=replace(assureNo," and ","")
if assureNo="" then
response.write "对不起找不到相应的保修卡信息!"
response.end
end if
strSql = "SELECT * from assure WHERE assureNo='"+assureNo+"'"
Set rst = Server.CreateObject("ADODB.Recordset")
rst.Open strSql, conn, 1, 1
if rst.bof and rst.eof then
response.write "对不起找不到相应的保修卡信息!"
response.end
end if
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>保修卡打印</title>
</head>
<script language=vbscript>
'sub test
'on error resume next
engineName="<%=rst("engineName")%>" '机种名称
engineNo="<%=rst("engineNo")%>" '发动机编号
frameNo="<%=rst("frameNo")%>" '框架号
buyDate="<%=rst("buyDate")%>" '购入日期
userName="<%=rst("userName")%>" '用户 姓名
usersex="<%=rst("usersex")%>" '用户 性别
userage="<%=rst("userage")%>" '用户 年龄
userAddress="<%=rst("userAddress")%>" '用户 住址
userschoolAge="<%=rst("userschoolAge")%>" '用户学历(文化水平)
userTel="<%=rst("userTel")%>" '用户 电话
userpostNum="<%=rst("userpostNum")%>" '用户 邮编
usermainPurpose="<%=rst("usermainPurpose")%>" '用户主要用途/场所
sellName="<%=rst("sellName")%>" '销售店名称
sellAddress="<%=rst("sellAddress")%>" '销售店地址
sellTel="<%=rst("sellTel")%>" '销售店电话
sellpostNum="<%=rst("sellpostNum")%>" '销售店邮编
clearOption="<%=rst("clearOption")%>" '销售商店说明事项 (明白项)
clear_Option=split(clearOption,",") '分离开每一项
dim chkFlag(12)
for i=1 to 12
chkFlag(i)=false '初始化
next
for each id in clear_Option
if isnumeric(id) then
chkFlag(id)=true
end if
next
Set ExcelAppx=CreateObject("Excel.Application")
With ExcelAppx
.Workbooks.Add
set objExcelBook=ExcelAppx.ActiveWorkBook
set objExcelSheets=objExcelBook.Worksheets
set objExcelSheet=objExcelBook.Sheets(1)
FOR I=1 TO 18
FOR J=1 TO 8
.cells(I,J).NumberFormatLocal = "@"
NEXT
NEXT
objExcelSheet.Range("E28:E39").HorizontalAlignment= 3 '居中对齐
.Range("A1:H1").Select
.Selection.Merge
.ActiveCell.font.size=16
.ActiveCell.FormulaR1C1="保 修 凭 证"
.ActiveCell.HorizontalAlignment= 3 '居中对齐
.Columns("A:A").ColumnWidth = 5.50 '设置列的部分****************
.Columns("B:B").ColumnWidth = 5.50
.Columns("C:C").ColumnWidth = 12.13
.Columns("D:D").ColumnWidth = 11.63
.Columns("E:E").ColumnWidth = 8.25
.Columns("F:F").ColumnWidth = 5.88
.Columns("G:G").ColumnWidth = 5.00
.Columns("H:H").ColumnWidth = 13.00
.Rows("1:1").RowHeight=20.25 '设置行的部分****************
.Rows("2:2").RowHeight=6.00
.Rows("3:6").RowHeight=14.25
.Rows("7:7").RowHeight=24.00
.Rows("8:8").RowHeight=22.50
.Rows("9:9").RowHeight=19.50
.Rows("10:10").RowHeight=21.00
.Rows("11:12").RowHeight=19.50
.Rows("13:13").RowHeight=23.25
.Rows("14:14").RowHeight=25.50
.Rows("15:15").RowHeight=26.25
.Rows("16:16").RowHeight=30.75
.Rows("17:17").RowHeight=21.75
.Rows("18:18").RowHeight=23.25
.Rows("19:19").RowHeight=4.50
.Rows("20:20").RowHeight=20.50
.Rows("21:22").RowHeight=14.25
.Rows("23:23").RowHeight=20.25
.Rows("24:25").RowHeight=14.25
.Rows("26:26").RowHeight=6.75
.Rows("27:41").RowHeight=14.25
.Rows("40:40").RowHeight=2.25
.Range("A1:H41").Select '设置成单元格居中放置*********
.ActiveCell.VerticalAlignment = -4108
.Range("A3:B3").Select
.Selection.Merge
.ActiveCell.FormulaR1C1="QR-19-01"
.Range("A4:H4").Select
.Selection.Merge
.ActiveCell.font.size=10
.ActiveCell.FormulaR1C1="1.请认真保管保修凭证"
.Range("A5:H5").Select
.Selection.Merge
.ActiveCell.font.size=10
.ActiveCell.FormulaR1C1="2.请认真阅读保证书内容和保证规定"
.Range("A6:H6").Select
.Selection.Merge
.ActiveCell.font.size=10
.ActiveCell.FormulaR1C1="3.在购买商店中领取保修凭证时,注意请店方在保修凭证中按要求填入必要的事项。"
FOR I=7 TO 10
.Range("A"&I&":C"&I).Select
.Selection.Merge
select case i
case 7
.ActiveCell.FormulaR1C1="机 种 名 称"
case 8
.ActiveCell.FormulaR1C1="发 动 机 编 号"
case 9
.ActiveCell.FormulaR1C1="框 架 号"
case 10
.ActiveCell.FormulaR1C1="购 入 日 期"
end select
.ActiveCell.HorizontalAlignment= 3 '居中对齐
.Range("D"&I&":H"&I).Select
.Selection.Merge
select case i
case 7
.ActiveCell.FormulaR1C1=engineName
case 8
.ActiveCell.FormulaR1C1=engineNo
case 9
.ActiveCell.FormulaR1C1=frameNo
case 10
.ActiveCell.FormulaR1C1=buyDate
end select
NEXT
.Range("A11:A15").Select
.Selection.Merge
.ActiveCell.WrapText = True '自动换行
.ActiveCell.HorizontalAlignment= 3 '居中对齐
.ActiveCell.FormulaR1C1="用 户"
.Range("B11:C12").Select
.Selection.Merge
.ActiveCell.HorizontalAlignment= 3 '居中对齐
.ActiveCell.FormulaR1C1="姓 名"
.Range("D11:D12").Select
.Selection.Merge
.ActiveCell.FormulaR1C1=userName
objExcelSheet.Range("E11:H11").Value=Array("性别:",usersex,"年龄:",userage&"")
objExcelSheet.Range("E12:E12").Value=Array("文化水平") '********************
.Range("F12:H12").Select
.Selection.Merge
.ActiveCell.FormulaR1C1=userschoolAge
.Range("B13:C13").Select
.Selection.Merge
.ActiveCell.HorizontalAlignment= 3 '居中对齐
.ActiveCell.FormulaR1C1="住 址"
.Range("D13:H13").Select
.Selection.Merge
.ActiveCell.FormulaR1C1=userAddress
.Range("B14:C14").Select
.Selection.Merge
.ActiveCell.HorizontalAlignment= 3 '居中对齐
.ActiveCell.FormulaR1C1="电 话"
.Range("D14:F14").Select
.Selection.Merge
.ActiveCell.FormulaR1C1=userTel
.Range("B15:C15").Select
.Selection.Merge
.ActiveCell.HorizontalAlignment= 3 '居中对齐
.ActiveCell.FormulaR1C1="主要用途/场所"
.Range("D15:H15").Select
.Selection.Merge
.ActiveCell.FormulaR1C1=usermainPurpose
.Range("A16:A18").Select
.Selection.Merge
.ActiveCell.HorizontalAlignment= 3 '居中对齐
.ActiveCell.FormulaR1C1="销 售 店"
.ActiveCell.WrapText = True '自动换行
.Range("B16:C16").Select
.Selection.Merge
.ActiveCell.HorizontalAlignment= 3 '居中对齐
.ActiveCell.FormulaR1C1="销售店名称"
.Range("D16:F16").Select
.Selection.Merge
.ActiveCell.FormulaR1C1=sellName
.Range("G16:H16").Select
.Selection.Merge
.ActiveCell.HorizontalAlignment= 3 '居中对齐
.ActiveCell.FormulaR1C1="印章"
.Range("B17:C17").Select
.Selection.Merge
.ActiveCell.HorizontalAlignment= 3 '居中对齐
.ActiveCell.FormulaR1C1=" 地址"
.Range("D17:H17").Select
.Selection.Merge
.ActiveCell.FormulaR1C1=sellAddress
.Range("B18:C18").Select
.Selection.Merge
.ActiveCell.HorizontalAlignment= 3 '居中对齐
.ActiveCell.FormulaR1C1=" 电话"
.Range("D18:F18").Select
.Selection.Merge
.ActiveCell.FormulaR1C1=sellTel
objExcelSheet.Range("G18:H18").Value=Array("邮编:",sellpostNum)
objExcelSheet.Range("G14:H14").Value=Array("邮编:",userpostNum)
.Range("A20:H20").Select
.Selection.Merge
.ActiveCell.HorizontalAlignment= 3 '居中对齐
.ActiveCell.FormulaR1C1="重 要 注 意"
.ActiveCell.font.ColorIndex = 2 '设置字体颜色为白色
.ActiveCell.Interior.ColorIndex = 1 '设置单元格背景为黑色
.Range("A21:H21").Select
.Selection.Merge
.ActiveCell.FormulaR1C1="本凭证作为重要的用户资料加以保管,因此请用户必须将此凭证认真填写"
Top
8 楼yousite1(国雾)回复于 2005-12-09 10:35:37 得分 0
.Range("A22:H22").Select
.Selection.Merge
.ActiveCell.FormulaR1C1="并将闽东本田联寄往厂家。还可以参与抽奖,获得精美礼品。"
.Range("A23:B23").Select
.Selection.Merge
.ActiveCell.FormulaR1C1="致各位客户:"
.Range("A24:H24").Select
.Selection.Merge
.ActiveCell.FormulaR1C1="交付本机时。请用户注意在购买商店中接受以下全部的事项说明。对已明白的"
.Range("A25:H25").Select
.Selection.Merge
.ActiveCell.FormulaR1C1="事项在说明栏中画上√标记,并请在署名栏目中签名。"
.Range("B27:D27").Select
.Selection.Merge
.ActiveCell.FormulaR1C1="销 售 商 店 说 明 事 项"
.Range("E27:E27").Select
.ActiveCell.FormulaR1C1="检 查"
for i=28 to 39
objExcelSheet.Range("B"&I&":"&"B"&I).Value=Array(CSTR(I-27))
.Range("C"&I&":"&"D"&I).Select
.Selection.Merge
select case i
case 28
.ActiveCell.FormulaR1C1="安全使用说明"
case 29
.ActiveCell.FormulaR1C1="各部件名称及其操作"
case 30
.ActiveCell.FormulaR1C1="发电机/水泵运转前的检查"
case 31
.ActiveCell.FormulaR1C1="启动发动机的方法"
case 32
.ActiveCell.FormulaR1C1="发电机/水泵使用方法"
case 33
.ActiveCell.FormulaR1C1="关闭发动机的方法"
case 34
.ActiveCell.FormulaR1C1="接受定期检查"
case 35
.ActiveCell.FormulaR1C1="简易检修及保修"
case 36
.ActiveCell.FormulaR1C1="长期不使用情况下的维护"
case 37
.ActiveCell.FormulaR1C1="请求维修前的检查"
case 38
.ActiveCell.FormulaR1C1="电源使用范例"
end select
if chkFlag(i-27) then
objExcelSheet.Range("E"&i&":"&"E"&i)="√"
end if
next
.range("B27:E39").Borders.LineStyle=1 '画边框
.Range("A41:E41").Select
.Selection.Merge
.ActiveCell.font.size=9
.ActiveCell.FormulaR1C1="■已经全部接受了保证书中各个项目的说明并理解其内容"
'*****************这里开始画边框************************************
.range("A7:H10").Borders.LineStyle=1 '画边框
.range("A11:C15").Borders.LineStyle=1 '画边框
.range("D11:D12").Borders.LineStyle=1 '画边框
.range("E11:H11").Borders(3).LineStyle=1 '画上边框
.range("E11:H11").Borders(4).LineStyle=1 '画下边框
.range("H11:H12").Borders(2).LineStyle=1 '画右边框
.range("E12:H12").Borders(4).LineStyle=1 '画下边框
.range("D13:H13").Borders.LineStyle=1 '画边框
.range("D14:H14").Borders(3).LineStyle=1 '画上边框
.range("D14:H14").Borders(4).LineStyle=1 '画下边框
.range("H13:H14").Borders(2).LineStyle=1 '画右边框
.range("D15:H15").Borders.LineStyle=1 '画边框
.range("A16:C18").Borders.LineStyle=1 '画边框
.range("D16:H16").Borders(3).LineStyle=1 '画上边框
.range("A17:h17").Borders.LineStyle=1 '画边框
.range("D18:H18").Borders(4).LineStyle=1 '画下边框
.range("H16:H18").Borders(2).LineStyle=1 '画右边框
'*************************************新增部分***********************************
'.range("A7:H10").HorizontalAlignment = -4108 '单元格街竖直对齐方式
.range("A7:H10").VerticalAlignment = -4108 '单元格水平对齐方式-4108表示居中对齐
.range("A11:H15").VerticalAlignment = -4108 '单元格水平对齐方式-4108表示居中对齐
.range("A16:H18").VerticalAlignment = -4108 '单元格水平对齐方式-4108表示居中对齐
.range("D16:H17").wrapText=true
.Rows("16:16").RowHeight=30.75
'************************************新增部分结束********************************
'exit sub
.Visible=True '设置为可见的!*************
End With
ExcelAppx.ActiveWindow.SelectedSheets.PrintPreview '实现打印预览
window.close
'end sub
</script>
<body>
如果不能正常打印请检查IE设置
</body>
</html>
Top
9 楼Camelot(罕疯)回复于 2005-12-09 10:56:38 得分 5
可以用ado的方式调用excel,不过不太方便,推荐打开是用fso复制一份excel文件,关闭是删除,这样就能实现多人同时打开了Top




