asp如何把数据放在excel中显示?

mustapha 2005-05-09 10:23:32
我有一个网页表格,显示了很多数据库信息;现在客户希望把这个表格的内容打出来.我觉得应该调用excel,然后在excel报表中显示数据.客户在excel报表中选择打印就可以,甚至可以自由编辑.我在网上找了找,asp.net是有的,但asp的例子似乎都不成功,谁有这方面的代码,贴出来或寄到我邮箱都可以.如果调试成功立即给分.我的邮箱: mustapha1207@hotmail.com.为了调试方便,excel中显示的不一定是数据库中数据,静态数据也可以.
...全文
375 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
mustapha 2005-05-10
  • 打赏
  • 举报
回复
恩.我把table在服务器端运行输出,就行了,就象江涛说的那样.代码如下:
<script language="javascript">
function toExcel(tablename)
{
var filename='统计报表.xls';
var mysheet=new ActiveXObject("OWC.Spreadsheet");
with(mysheet)
{
DataType = "HTMLData";
HTMLData =tablename.outerHTML;
try{
ActiveSheet.Export(filename, 0);
alert('已经成功导出为Excel表');
};
catch (e){
alert('导出Excel表失败,请确定已安装Excel2000(或更高版本),并且没打开同名xls文件');
};
}
}
</script>
<%
Response.Write "<table id='dd' width='130%' border='1' cellpadding='1' cellspacing='0' bordercolordark='#000fff'>"
Response.Write "<tr>"
Response.Write "<td>df</td>"
Response.Write "<td>df</td>"
Response.Write "</tr>"
Response.Write "<tr>"
Response.Write "<td>df</td>"
Response.Write "<td>df</td>"
Response.Write "</tr>"
Response.Write "</table>"
%>
<input align="left" type="button" name="out_excel" onclick="toExcel(dd);" value="導出到Excel" class="notPrint">

结贴
mustapha 2005-05-10
  • 打赏
  • 举报
回复
江涛:你看我的代码如下,导出后出来是我说的情况。我的代码有什么问题么?另外,这段代码根本不能预览Excel,所以不存在你说的可能性
<script language="javascript">
function toExcel(tablename)
{
var filename='统计报表.xls';
var mysheet=new ActiveXObject("OWC.Spreadsheet");
with(mysheet)
{
DataType = "HTMLData";
HTMLData =tablename.outerHTML;
try{
ActiveSheet.Export(filename, 0);
alert('已经成功导出为Excel表');
};
catch (e){
alert('导出Excel表失败,请确定已安装Excel2000(或更高版本),并且没打开同名xls文件');
};
}
}
</script>
<table id='dd' width='130%' border='1' cellpadding='1' cellspacing='0' bordercolordark='#000fff'>
<tr>
<td>df</td>
<td>df</td>
</tr>
<tr>
<td>df</td>
<td>df</td>
</tr>
</table>
<input align="left" type="button" name="out_excel" onclick="toExcel(dd);" value="導出到Excel" class="notPrint">
hushuang7094 2005-05-09
  • 打赏
  • 举报
回复
<SCRIPT LANGUAGE="javascript">

function AutomateExcel()
{
var oXL = new ActiveXObject("Excel.Application");
var oWB = oXL.Workbooks.Add();
var oSheet = oWB.ActiveSheet;
var hang = outtable.rows.length;

var lie = outtable.rows(0).cells.length;

for (i=0;i<hang;i++)
{
for (j=0;j<lie;j++)
{
oSheet.Cells(i+1,j+1).value = outtable.rows(i).cells(j).innerText;
}

}
oXL.Visible = true;
oXL.UserControl = true;

}
</SCRIPT>


把表格的id改成“outtable”,再用一个按钮 <input type="button" name="out_excel" onclick="AutomateExcel()" value="导出到excel" class="notPrint"
就可以了

不过还要注意一下:网页中的工具栏-Internet选项-安全-自定义级别中的ActiveX的控件和插件是否选择了启用,如果一切如上,就OK啦
Schnaufer 2005-05-09
  • 打赏
  • 举报
回复
这是个老问题了..网上多的是这样的代码....
NetFishDuDu 2005-05-09
  • 打赏
  • 举报
回复
我是用这种方法的,你试试看可不可以
With Response
.Write "<SCR" & "IPT language=""VBScript"">" & vbCrLf
.Write "Dim objExcel" & vbCrLf
.Write "Set objExcel = CreateObject(""Excel.Application"")" & vbCrLf
.Write "objExcel.Application.WorkBooks.Add(""C:\BaoNa\aa.xls"")" & vbCrLf
.Write "With objExcel" & vbCrLf

For i = 0 To objRecordSet.RecordCount - 3
.Write " .RANGE(""A4"").Select" & vbCrLf
.Write " .Selection.EntireRow.Insert " & vbCrLf
Next
i=0
Do While Not objRecordSet.Eof
i=i+1
.Write " .RANGE(""A" & (i+2) &""").VALUE = """ & Trim(objRecordSet.Fields("Field1").Value) & """" & vbCrLf
.Write " .RANGE(""B" & (i+2) &""").VALUE = """ & Trim(objRecordSet.Fields("Field2").Value) & """" & vbCrLf
.Write " .RANGE(""C" & (i+2) &""").VALUE = """ & Trim(objRecordSet.Fields("Field3").Value) & """" & vbCrLf
.Write " .RANGE(""D" & (i+2) &""").VALUE = """ & Trim(objRecordSet.Fields("Field4").Value) & """" & vbCrLf
.Write " .RANGE(""E" & (i+2) &""").VALUE = """ & Trim(objRecordSet.Fields("Field5").Value) & """" & vbCrLf
.Write " .RANGE(""F" & (i+2) &""").VALUE = """ & Trim(objRecordSet.Fields("Field6").Value) & """" & vbCrLf
objRecordSet.MoveNext
Loop
.Write "End With" & vbCrLf
.Write "objExcel.Visible = True" & vbCrLf
.Write "Set objExcel = Nothing" & vbCrLf
.Write "</SCR" & "IPT>" & vbCrLf
End With
lstup 2005-05-09
  • 打赏
  • 举报
回复
补充一下。如果问题解决了,多给点分给兔子吧 ^_^
lstup 2005-05-09
  • 打赏
  • 举报
回复
Fso写入:
Dim fso, tf,aa
Set fso = CreateObject("Scripting.FileSystemObject")
aa = server.MapPath("aa.xls")
Set tf = fso.CreateTextFile(aa, True)
' 写一行,并且带有新行字符。
tf.WriteLine("***" & CHR(009) & "***")
tf.Close
Response.Write "创建成功!"

主要思路是用Fso创建一个xls文件,用Tab分隔符,分隔数据。

Excel.Application读取Excel数据:

< %@language=vbscript %>
<%

Set xlApp = server.CreateObject("Excel.Application")

strsource = Server.MapPath("data.xls")

Set xlbook = xlApp.Workbooks.Open(strsource)
Set xlsheet = xlbook.Worksheets(1)

i=1
response.write "<table cellpadding=0 cellspacing=0 border=1 width=500>"
while xlsheet.cells(i,1)<>""

response.write "<tr>"
response.write " <td height=20 align=center width=100>" & xlsheet.Cells(i, 1) & "</td>"
response.write " <td height=20 align=center width=200>" & xlsheet.Cells(i, 2) & "</td>"
response.write "</tr>"
i=i+1

wend
response.write "</table>"
set xlsheet=nothing
set xlbook=nothing
xlApp.quit '千万记住要加这一句,否则每运行一次你的机器里就增加一个excel进程,而且无法释放。我试过"set xlApp=nothing"是不行的。
%>

Excel.Application写入Excel数据:


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2****2">
<title>无标题文档</title>
</head>

<body>
<TABLE id="outtable" name="outtable">
<TR>
<TD>asdf</TD>
<TD>asdf</TD>
<TD>asdf</TD>
<TD>asdf</TD>
<TD>asdf</TD>
</TR>
<TR>
<TD>asdf</TD>
<TD>asdf</TD>
<TD>asdf</TD>
<TD>asdf</TD>
<TD>asdf</TD>
</TR>
<TR>
<TD>asdf</TD>
<TD>asdf</TD>
<TD>asdf</TD>
<TD>asdf</TD>
<TD>asdf</TD>
</TR>
<TR>
<TD>asdf</TD>
<TD>asdf</TD>
<TD>asdf</TD>
<TD>asdf</TD>
<TD>asdf</TD>
</TR>
</TABLE>
<input type="button" name="out_excel" onclick="AutomateExcel();" value="导出到excel" class="notPrint">
<SCRIPT LANGUAGE="javascript">
function AutomateExcel()
{
var oXL = new ActiveXObject("Excel.Application");
var oWB = oXL.Workbooks.Add();
var oSheet = oWB.ActiveSheet;
var hang = outtable.rows.length;

var lie = outtable.rows(0).cells.length;

for (i=0;i<hang;i++)
{
for (j=0;j<lie;j++)
{
oSheet.Cells(i+1,j+1).value = outtable.rows(i).cells(j).innerText;
}

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

上面的办法没有调试成功,应该是JS没有权限的问题,改成服务端运行应该可以。

用ado读取Excel导入到access
<%
Dim cn,oConn,connstr
'打开XLS.
Set cn = Server.CreateObject("ADODB.Connection")
cn.Provider = "Microsoft.Jet.OLEDB.4.0 "
cn.ConnectionString = "Data Source=" & Server.MapPath("data.xls") & ";" & _
"Extended Properties=Excel 8.0;"
cn.Open
'打开MDB.
connstr="DBQ="+server.MapPath("data.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
set oConn=server.CreateObject("ADODB.CONNECTION")
oConn.open connstr

'读取数据.
set rsRead=server.CreateObject("ADODB.Recordset")
rsRead.Open "select * from [Sheet1$]",cn,1,1
do until rsRead.EOF
'写入数据库.
oConn.Execute("Insert into users(userid,password)Values('"& rsRead.Fields("userid")&"','" &rsRead.Fields("password") & "')" )
rsRead.MoveNext
loop
%>


数据库data.mdb

表users
id,uesrid,password

Excel文件data.xls

数据
useridpassword
wangw521
zhangez254
hongh112


'=====================!!!!ASP读取EXCEL注事项!!!!===========================
'i)将Excel97或Excel2000生成的XLS文件(book)看成一个数据库,其中的每一个工作表(sheet)看成数据库表
'ii)ADO假设Excel中的第一行为字段名.所以你定义的范围中必须要包括第一行的内容
'iii)Excel中的行标题(即字段名)不能够包含数字. Excel的驱动在遇到这种问题时就会出错的。例如你的行标题名为“F1”
'iiii)如果你的Excel电子表格中某一列同时包含了文本和数字的话,那么Excel的ODBC驱动将不能够正常, 处理这一行的数据类型,你必须要保证该列的数据类型一致
'===========================================================

用ado的方法同样能够写入Excel数据
  • 打赏
  • 举报
回复
<%@ Language=VBScript %>
<%
Response.Buffer = True
Response.ContentType = "application/vnd.ms-excel"
%>
<table border="1">
<tr>
<th>项目 A</th>
<th>项目 B</th>
<th>合计</th>
<th>项目 C</th>
<th>项目 D</th>
<th>合计</th>
</tr>
<tr>
<td height="30"><%=Request.form("aa")%></td>
<td>3</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td><font color="red">=sum(a2:e2)*100</font></td>
</tr>
<tr>
<td>2</td>
<td>1</td>
<td colspan="4"><font color="red">=sum(a3:b3)+f2</font></td>
</tr>
</table>
无赖良品 2005-05-09
  • 打赏
  • 举报
回复
Dim xlsPath
Dim objExcelApp_1,xlbook_1,xlsheet_1
xlsPath = Server.MapPath("..\")
set objExcelApp_1 = CreateObject("Excel.Application")
set xlbook_1 = objExcelApp_1.workbooks.open(xlsPath & "\excel address\excel 文件名.xls")
set xlbook_1 = objExcelApp_1.ActiveWorkbook
objExcelApp_1.DisplayAlerts = false
objExcelApp_1.Application.Visible = false
objExcelApp_1.ScreenUpdating = false
---涛声依旧--- 2005-05-09
  • 打赏
  • 举报
回复
導出時沒有表頭
你可以再加一個table把表頭包括進來后再導出這個table即可
用我的那種方法可以完全導出到Excel中﹐添加﹑刪除﹑打印預覽等都跟Excel一模一樣
lirong 2005-05-09
  • 打赏
  • 举报
回复
<% response.ContentType ="application/vnd.ms-excel"%>
直接在页面首行加上,把该页用输出,不过最好这个页面都是表格。试试吧
---涛声依旧--- 2005-05-09
  • 打赏
  • 举报
回复
虽然成功导出excel表,但我这个表打开1看,发现却是桌面的图像,数据根本没有显示。
-------------------------------------------------------------------------

我測試沒問題﹐
你出現的那種問題﹐可能是在預覽Excel時再導出到Excel的
解決方法﹕
點一下Excel圖標-->檢視-->全屏幕即可看到數據
mustapha 2005-05-09
  • 打赏
  • 举报
回复
谢谢各位的大力帮助。我都调试了一下,结果如下:
1、兔子的代码确实能导出能成功,但是只有excel的列和行,但没有菜单栏。即只能删除和添加数据,也可以进行页面设置,但无法完成对数据的打印预览;这个有什么办法可以解决么?
2、小小小问题的代码,我按照说的做了,但是还是提示网页有错误;
3、江涛的代码,虽然成功导出excel表,但我这个表打开1看,发现却是桌面的图像,数据根本没有显示。
---涛声依旧--- 2005-05-09
  • 打赏
  • 举报
回复
參考﹕
http://community.csdn.net/Expert/topic/3303/3303036.xml?temp=.6264002
---涛声依旧--- 2005-05-09
  • 打赏
  • 举报
回复
<script language="javascript">
function toExcel(tablename)
{
var filename='统计报表.xls';
var mysheet=new ActiveXObject("OWC.Spreadsheet");
with(mysheet)
{
DataType = "HTMLData";
HTMLData =tablename.outerHTML;
try{
ActiveSheet.Export(filename, 0);
alert('已经成功导出为Excel表');
};
catch (e){
alert('导出Excel表失败,请确定已安装Excel2000(或更高版本),并且没打开同名xls文件');
};
}
}
</script>


Response.write"<table id='dd' width='130%' border='1' cellpadding='1' cellspacing='0' bordercolordark='#000fff'>"

<input align="left" type="button" name="out_excel" onclick="toExcel(dd);" value="導出到Excel" class="notPrint">

28,406

社区成员

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

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