下面即是用ASP创建(生成)PDF文件的代码
<%
选项显式
子检查XlDriver()
出错时继续下一步
昏暗的 vConnString
昏暗 oConn,oErr
' 尝试连接到文件 NUL:
vConnString = DRIVER={Microsoft Excel 驱动程序 (*.xls)};DBQ=NUL:
设置 oConn = CreateObject(ADODB.Connection)
oConn.Open vConnString
对于 oConn.Errors 中的每个 oErr
' 当 Excel 驱动程序报告创建文件失败时,
' 那么它必须安装并工作;-))
如果 oErr.NativeError = -5036 那么
退出子程序
结束如果
下一个
Response.Write 提供程序或驱动程序不可用。 (重新)安装 MDAC。
Response.Write hex(Err.Number) & & Err.Description &
对于 oConn.Errors 中的每个 oErr
Response.Write hex(oErr.Number) & & oErr.NativeError & & oErr.Description &
下一个
响应.结束
结束子
函数 GetConnection(vConnString)
出错时继续下一步
设置 GetConnection = Server.CreateObject(ADODB.Connection)
GetConnection.Open vConnString
如果 Err.Number <> 0 那么
设置 GetConnection = 无
结束如果
结束功能
函数 OptionTag(vChoice,vTrue)
暗淡选定
如果 vTrue 那么
v已选择 = 已选择
结束如果
OptionTag = <选项&vSelected&>&_
Server.HtmlEncode(vChoice) & </选项> & vbCrLf
结束功能
函数 IsChecked(vTrue)
如果 vTrue 那么
已检查 = 已检查
结束如果
结束功能
函数 BookOptions(vXlFile)
昏暗的虚拟服务器文件夹
变暗 ofFs、oFolder、oFile
暗淡选定
vServerFolder = Server.MapPath(.)
Set oFs = Server.CreateObject(Scripting.FileSystemObject)
设置 oFolder = oFs.GetFolder(vServerFolder)
对于 oFolder.Files 中的每个 oFile
如果 oFile.Type = Microsoft Excel 工作表 那么
vSelected = (oFile.Name = vXlFile)
图书选项 = 图书选项 & _
OptionTag(oFile.Name, vSelected)
结束如果
下一个
设置 oFolder = 无
集合 = 无
结束功能
函数 NamedRangeOptions(oConn, vXlRange, vTableType)
模糊模式
暗淡选定
NamedRangeOptions = OptionTag(空, 空)
如果 TypeName(oConn) = 连接 那么
设置 oSchemaRs = oConn.OpenSchema(adSchemaTables)
不做时做oSchemaRS.EOF
如果 oSchemaRs(TABLE_TYPE) = vTableType 那么
vSelected = (oSchemaRs(TABLE_NAME) = vXlRange)
命名范围选项 = 命名范围选项 & _
OptionTag(oSchemaRs(TABLE_NAME), vSelected)
结束如果
oSchemaRs.MoveNext
环形
结束如果
结束功能
函数数据表(oConn,vXlRange,vXlHasHeadings)
出错时继续下一步
' 来自 OleDbVbc.inc
常量 DB_E_ERRORSINCOMMAND = &H80040E14
昏暗或场
暗淡 vThTag、vThEndTag
如果 vXlHasHeadings 那么
vThTag = <第>
vThEndTag = </th>
别的
vThTag = <td>
vThEndTag = </td>
结束如果
数据表 = <表边框=1>
如果 TypeName(oConn) = 连接 那么
设置 oRs = oConn.Execute([ & vXlRange & ])
如果 oConn.Errors.Count > 0 那么
对于 oConn.Errors 中的每个 oConnErr
如果 oConnErr.Number = DB_E_ERRORSINCOMMAND 那么
数据表 = 数据表 & _
<tr><td>没有这样的范围:</td><th> & vXlRange & </th></tr>
别的
数据表 = 数据表 & _
<tr><td> & oConnErr.Description & </td></tr>
结束如果
下一个
别的
数据表 = 数据表 & <tr>
对于 oRs.Fields 中的每个 oField
数据表 = 数据表 & vThTag & oField.Name & vThEndTag
下一个
数据表 = 数据表 & </tr>
不做就做或Eof
数据表 = 数据表 & <tr>
对于 oRs.Fields 中的每个 oField
数据表 = 数据表 & <td> & oField.Value & </td>
下一个
数据表 = 数据表 & </tr>
或移动下一个
环形
结束如果
设置或=无
别的
DataTable = DataTable & <tr><td>文件被另一个应用程序锁定或无法访问。无法继续。</td></tr>
结束如果
数据表 = 数据表 & </table>
结束功能
' - 主要的 -
%>
<html>
<头>
<title>读取Excel</title>
<脚本语言=javascript>
<!--
函数 XlBook_onchange(theForm) {
与(表格){
XlSheet.selectedIndex = 0;
XlSheet.disabled = true;
XlNamedRange.selectedIndex = 0;
XlNamedRange.disabled = true;
XlTypedRange.value = A:IV;
}
}
函数 XlSheet_onchange(theForm) {
与(表格){
XlNamedRange.selectedIndex = 0;
XlTypedRange.value = XlSheet.options[XlSheet.selectedIndex].text;
}
}
函数 XlNamedRange_onchange(theForm) {
与(表格){
XlSheet.selectedIndex = 0;
XlTypedRange.value = XlNamedRange.options[XlNamedRange.selectedIndex].text;
}
}
函数 XlTypedRange_onchange(theForm) {
与(表格){
XlSheet.selectedIndex = 0;
XlNamedRange.selectedIndex = 0;
}
}
//-->
</脚本>
</头>
<正文>
<%
调暗 vXlFile、vXlFilePath
暗淡 vXlRange、vXlHasHeadings
暗淡禁用
昏暗的 vConnString
昏暗 oConn、oConnErr
Const adSchemaTables = 20 ' 来自 adovbs.inc
CheckXlDriver '确保它正常工作
vXlFile = 请求(XlBook)
如果 vXlFile <> 为空,则
vXlRange = 请求(XlTypedRange)
如果 vXlRange = 空则
vXl范围 = A:IV
别的
vXlRange = 替换(vXlRange, !, $)
结束如果
vXlHasHeadings = 请求(XlHasHeadings)
'建立连接
vXlFilePath = Server.MapPath(vXlFile)
vConnString = DRIVER={Microsoft Excel 驱动程序 (*.xls)};ReadOnly=1;DBQ= & _ vXlFilePath
设置 oConn = GetConnection(vConnString)
别的
v禁用 = 禁用
结束如果
%>
<表单名称=MyForm 方法=POST 操作=<%=Request.ServerVariables(SCRIPT_NAME)%>>
<表格边框=1宽度=100%>
<tr>
<th>工作簿:</th>
<td>
<选择名称=XlBook LANGUAGE=javascript onchange=return XlBook_onchange(MyForm)>
<%= 书籍选项(vXlFile) %>
</选择></td>
<tdalign=center>工作表:</td>
<td><选择 <%=vDisabled%> name=XlSheet LANGUAGE=javascript onchange=return XlSheet_onchange(MyForm)>
<%= NamedRangeOptions(oConn、vXlRange、系统表) %>
</选择></td>
</tr>
<tr>
<th>范围:</th>
<td><输入类型=文本名称=XlTypedRange LANGUAGE=javascript onchange=返回XlTypedRange_onchange(MyForm)
值=<%= vXlRange%>></td>
<tdalign=center>命名范围:</td>
<td><选择 <%=vDisabled%> name=XlNamedRange LANGUAGE=javascript onchange=return XlNamedRange_onchange(MyForm)>
<%= NamedRangeOptions(oConn, vXlRange, TABLE) %>
</选择></td>
</tr>
<tr>
<第>
<p></th>
<td colspan=3>
<输入类型=复选框名称=XlHasHeadings
<%= IsChecked(vXlHasHeadings) %>
value=True> 将第一行显示为列标题</td>
</tr>
<tr>
<第>
<p></th>
<td colspan=3>
<a href=<%= vXlFile %>><%= vXlFile %></a>
</td>
</tr>
</表>
<输入类型=提交值=提交名称=cmdSubmit>
<输入类型=重置值=重置名称=cmdReset>
</形式><小时>
<%
如果 vXlRange <> 为空,则
响应.写入数据表(oConn,vXlRange,vXlHasHeadings)
结束如果
%>
</正文>
</html>