asp导出到excel时如何不使用activeX控件

aliren 2006-05-15 11:32:39
我用Excel.Application方法导出asp表格内容时使用了ActiveX控件,如果用户禁用了该控件将无法实现导出操作。

现在我想问一下有没有方法不使用到ActiveX控件的,比如用.dll组件

Excel.Application具体实现代码如下:
<SCRIPT LANGUAGE="javascript">
//指定页面区域内容导入Excel
function AllAreaExcel()
{
var oXL = new ActiveXObject("Excel.Application");
var oWB = oXL.Workbooks.Add();
var oSheet = oWB.ActiveSheet;
var sel=document.body.createTextRange();
//PrintA是table的id
sel.moveToElementText(PrintA);
sel.select();
sel.execCommand("Copy");
oSheet.Paste();
oXL.Visible = true;
}
</SCRIPT>

现在我想问一下有没有方法不使用到ActiveX控件的,比如用.dll组件
...全文
305 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
aliren 2006-05-16
  • 打赏
  • 举报
回复
感谢大家的关注,我现在用OWC方式,只是觉得没有Excel.Application好。Excel.Application的话可以通过页面排版制作excel表格,OWC是直接读数据库的记录。不过不知道有没有人可以帮我修改一下。

<%
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.Italic = False
objSpreadsheet.Cells(iRow, iCol).Font.Size = 10
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 objRS
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open "SELECT * FROM admin", conn,1,1'conn自己写一个
Dim SaveName
SaveName = "aaa1"'Request.Cookies("savename")("name")

Dim objExcel
Dim ExcelPath
ExcelPath =SaveName & ".xls" ' "Excel\" & SaveName & ".xls"
Set objExcel = New ExcelGen
objExcel.RowOffset = 1
objExcel.ColumnOffset = 1
objExcel.GenerateWorksheet(objRS)
If objExcel.SaveWorksheet(Server.MapPath(ExcelPath)) then
Response.Write "<html><body bgcolor='gainsboro' text='#000000'>已保存为Excel文件. <a href='" & server.URLEncode(ExcelPath) & "'>下载</a></body></html>"
Else
Response.Write "在保存过程中有错误!"
End If
Set objExcel = Nothing
objRS.Close
Set objRS = Nothing
%>
xxuu503 2006-05-16
  • 打赏
  • 举报
回复
估计服务器段直接放一个excel文件,他也下载不了的



你这样子试一下,如果纯粹下载excel文件都不能成功

那就更不用说生成了
xxuu503 2006-05-16
  • 打赏
  • 举报
回复
我的方法根activex无关

你是不是装了3721(或者其他的工具条)?

就是那个家伙的问题



估计服务器段直接放一个excel文件,他也下载不了的
aliren 2006-05-15
  • 打赏
  • 举报
回复
服务器端怎么做?给个方案方法阿,
Peter_Wang 2006-05-15
  • 打赏
  • 举报
回复
必须在客户端实现么?我倒是做过服务端的
king2003 2006-05-15
  • 打赏
  • 举报
回复
可以这个可以在服务器端进行操作的.不过你服务器端得注册OWC才行.
aliren 2006-05-15
  • 打赏
  • 举报
回复
用 xxuu503(我爱郭芙蓉!) 方法也会有提示:

某些文件可能会损害你的计算机.如果下面的文件信息看起来可疑,或者您不完全相信它的来源,不要打开或保存此文件.

可能是被一些防火墙或者杀毒软件检测到的,或者本来就是微软设置的,所以感觉也不是很好.而且这种方法是在页面中嵌入.xls表格
xxuu503 2006-05-15
  • 打赏
  • 举报
回复
xls.asp:

<%
Response.ContentType="application/vnd.ms-excel"
%>
<table><tr><td>数据放在这儿</td></tr><td>
<table><tr><td>数据放在这儿</td></tr><td>




保存为asp,从iis看看
xxuu503 2006-05-15
  • 打赏
  • 举报
回复
xls.asp:

<%
Response.ContentType="application/vnd.ms-excel"
%>
<table><tr><td>数据放在这儿</td></tr><td>




保存为asp,从iis看看
BarcodeX ActiveX控件 能产生几乎所有类型的条形码。它可以和数据源绑定,用于数据库报告。条形码可以导出为位图,元文件,剪贴板等。支持的条形码格式有:EAN-13、 EAN-8、EAN-2、EAN-5、UPC-A、UPC-E、Code39、Code39 Ext、Code93、 Code 128、EAN-128、ISSN、ISBN、Plessey、Code11、Code25、Code25 Int.、Codebar 甚至PDF417 2维条形码。 BarcodeX ActiveX控件 能用于任何Windows应用程序(比如 MS Word, MS Access, Visual Basic, VisualStudio .NET等),包括VB.NET运用实例。 BarcodeX ActiveX控件的程序界面如下: BarcodeX ActiveX控件的特点: Windows95/98/NT/2000/XP的32位Bit ActiveX Control (OCX); 能工作于VisualStudio.Net、ASP、VBScript等; 把条形码导出ASP网页; 可选的位于条形码下的文本行,支持Windows所有字体; 前台和背景颜色可配置; 调整条形码大小; 旋转条形码; 把条形码导出为BMP 或 EMF格式图片; 支持的条形码格式有:PDF-417、EAN-13、EAN-8、 EAN-5、EAN-2、UPC-A、UPC-E、Code39、Code39 Ext、Code 128、 EAN-128、ISSN、ISBN、Codebar、Code25、Inteleaved 25、Post 25、Code11、Code93、Plessey; 自动计算和添加校验位数; 能工作于支持ActiveX的程序和开发环境如:Microsoft Office 97、Visual Studio、Visual C++、Visual Basic and Visual Basic for Applications (VBA)、J++, Visual FoxPro、 Access97、Word97、Excel、Works 4.5、FrontPage97/98、 Powerbuilder、Delphi; 不需要其他的DLL; 能把条形码拷贝到剪贴板; 在VB里可把条形码用做图片对象; 安装和卸载方便。
ComponentOne Studio for ActiveX 目前包括以下产品: SizerOne 通过这一4合1的构建集合ezai您的应用程序中增加缩放、标签和parsing的功能。 SizerOne是VS-OCX的最新版,包含两个缩放构件,可处理简单和复杂的缩放,一个可创建笔记本型和Outlook型的标签,以及一个用于自动对字符串进行parsie的parsing构件。 其他的功能允许您更快递设计网格和表单、在子控件中增框架、灰度图片等。 True DataControl 在您的桌面和网络应用程序的数据源中指定业务逻辑。 True DataControl 是一个ActiveX 控件,可作为OLE DB/ADO 数据源来创建应用程序。 它不仅仅是数据源,还是一个具备逻辑的数据源—可替换MS ADO 数据控件等标准数据源—允许程序员在数据源中将业务逻辑指定为一套业务规则,从而使应用程序更耐用、可扩展和可管理。 True DBGrid Pro 在您的应用程序中加入强大的数据绑定网格。 True DBGrid Pro (由ComponentOne及以前的APEX 软件公司开发)允许最终用户以列表格式浏览、编辑、添加和删除数据。 True DBGrid Pro 可对数据库的界面进行全面管理,使程序员把精力集中在与应用程序有关的重要任务上。 True DBGrid Pro 还可以通过程序员自己的数据源用于非绑定或存储模式。 True DBInput Pro 收集准确、格式化的用户输入。 True DBInput Pro 集成了8个高质量、面向数据的ActiveX 输入控件和5个可为程序员提供所需工具的对象,以创建企业范围内的互联网/内部网前端数据库应用。 这些强化的控件可替换Visual Basic的文本、日历、屏蔽、编辑框和框架控件来进行数据的输入,并可为金融应用程序增加定制的对象。 True DBList Pro 在您的应用程序中加入多列列表和组合框。 True DBList Pro 是一个由两个面向数据的ActiveX构件套,可为您的应用程序提供耐用的数据访问、数据表示和用户界面功能,使其能像网格一样运行,但却对列表有轻量化的要求。 功能包括对原始OLE DB和 ADO的支持、格式化的预览和打印、多列排序和搜索、导出为HTML等。 ComponentOne WebChart (包括表单) 为动态服务器页(ASP)创建独立于浏览器的动态表单。 True WebChart是一个企业图表工具,允许您开发图表或图形,并作为JPEG或PNG文件应用于任何浏览器。 你还可以将表单用作ActiveX控件,以便让最终用户对图表样式和数据的值进行更改。 True WebChart 具有两个服务器端的图表构件- 1个用于2D图表,另一个用于3D构件。 ASP 的web服务器可进行图表的创建并将完整的图表和图形发送到服务器。 VSFlexGrid Pro 增加灵活的网格,以显示列表数据。 VSFlexGrid Pro是对随Visual Basic附带的MSFlexGrid 的升级,可向您提供全范围的功能,以便为数据库应用程序创建灵活、强大的前端。 用一系列新方法在您的Windows、互联网或内部网项目中对动态数据的显示和表示进行定制化,以进行显示、编辑、格式化、组织、汇总和列表数据的打印。 VSSPELL 为任何Visual Basic 应用程序增加拼写检查和同义词词典功能。 VSSPELL 是一个定制化的库,由vsSpell和 vsThesaurus组成。 只需将控件置于您的表单中,您的最终用户即可立即拥有收录25万多个美国英语单词的VSSPELL字典的功能。 该字典具有为错误单词提供建议的功能,并可根据现有词典创建新的主词典(例如,微软Word),并且可忽略或改正所有错误单词,并且具有创建和维护字典的功能。 VSVIEW (包括典型版本) 可对文本进行自动格式化,以便显示或导出。 VSVIEW 允许您在创建表格将文本进行多列格式化,包括增加表头、页脚、文本框、边框和文本环绕等。 您可以对图片、嵌入的RTF字符串进行渲染并导出到RTF或HTML中。 您甚至还可以在您的应用程序中增加所见即所得的预览,提供无级缩放、缩略图及页面的并排预览。 用户可完全控制缩放和页面的方向。 ComponentOne Query 可在您的应用程序中加入临查询功能并可被用户直接使用。 ComponentOne的查询构件是一个基于COM,用于应用程序集成的构件,您的最终用户无需为此学习新的技能。 该构件与强大的查询生成引擎、查询引擎和schema 设计器完全兼容。 功能包括: 支持SQL数据库、 Simple DataSour

28,391

社区成员

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

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