{"id":774,"date":"2011-11-18T00:13:32","date_gmt":"2011-11-17T16:13:32","guid":{"rendered":""},"modified":"2014-03-11T22:40:47","modified_gmt":"2014-03-11T14:40:47","slug":"%e7%94%a8asp%e5%88%9b%e5%bb%ba%e7%94%9f%e6%88%90pdf%e6%96%87%e4%bb%b6%e7%9a%84%e4%bb%a3%e7%a0%81","status":"publish","type":"post","link":"http:\/\/www.xiaoyebailong.com\/index.php\/2011\/11\/18\/774.htm","title":{"rendered":"\u7528ASP\u521b\u5efa(\u751f\u6210)PDF\u6587\u4ef6\u7684\u4ee3\u7801"},"content":{"rendered":"<p>\u4e0b\u9762\u5373\u662f\u7528<a rel=\"nofollow\" href=\"http:\/\/www.jzxue.com\/wangzhankaifa\/asp\/\" target=\"_blank\"><font color=\"#333333\">ASP<\/font><\/a>\u521b\u5efa(\u751f\u6210)<a rel=\"nofollow\" href=\"http:\/\/www.jzxue.com\/tag\/PDF\/\" target=\"_blank\"><font color=\"#333333\">PDF<\/font><\/a>\u6587\u4ef6\u7684\u4ee3\u7801<\/p>\n<p>&lt;% <br \/>\nOption Explicit <\/p>\n<p>Sub CheckXlDriver() <br \/>\nOn Error Resume Next <\/p>\n<p>Dim vConnString <br \/>\nDim oConn, oErr <\/p>\n<p>&#8216; try to connect to file NUL: <br \/>\nvConnString = &quot;DRIVER={Microsoft Excel Driver (*.xls)};DBQ=NUL:&quot; <\/p>\n<p>Set oConn = CreateObject(&quot;ADODB.Connection&quot;) <br \/>\noConn.Open vConnString <\/p>\n<p>For Each oErr in oConn.Errors <br \/>\n&#8216; when the Excel driver reports &quot;Failure creating file&quot;, <br \/>\n&#8216; then it must be installed and working ;-)) <br \/>\nIf oErr.NativeError = -5036 Then <br \/>\nExit Sub <br \/>\nEnd If <br \/>\nNext <\/p>\n<p>Response.Write &quot;Provider or Driver not available. (Re-)Install MDAC.<\/p>\n<p>&quot; <\/p>\n<p>Response.Write hex(Err.Number) &amp; &quot; &quot; &amp; Err.Descr<a rel=\"nofollow\" href=\"http:\/\/www.jzxue.com\/tag\/IP\/\" target=\"_blank\"><font color=\"#333333\">ip<\/font><\/a>tion &amp; &quot;<br \/>\n&quot; <br \/>\nFor Each oErr in oConn.Errors <br \/>\nResponse.Write hex(oErr.Number) &amp; &quot; &quot; &amp; oErr.NativeError &amp; &quot; &quot; &amp; oErr.Description &amp; &quot;<br \/>\n&quot; <br \/>\nNext <br \/>\nResponse.End <\/p>\n<p>End Sub <\/p>\n<p>Function <a rel=\"nofollow\" href=\"http:\/\/www.jzxue.com\/tag\/get\/\" target=\"_blank\"><font color=\"#333333\">Get<\/font><\/a>Connection(vConnString) <br \/>\nOn Error Resume Next <\/p>\n<p>Set GetConnection = <a rel=\"nofollow\" href=\"http:\/\/www.jzxue.com\/fuwuqi\/\" target=\"_blank\"><font color=\"#333333\">Server<\/font><\/a>.CreateObject(&quot;ADODB.Connection&quot;) <br \/>\nGetConnection.Open vConnString <\/p>\n<p>If Err.Number &lt;&gt; 0 Then <br \/>\nSet GetConnection = Nothing <br \/>\nEnd If <\/p>\n<p>End Function <\/p>\n<p>Function OptionTag(vChoice,vTrue) <br \/>\nDim v<a rel=\"nofollow\" href=\"http:\/\/www.jzxue.com\/tag\/Select\/\" target=\"_blank\"><font color=\"#333333\">Select<\/font><\/a>ed <\/p>\n<p>If vTrue Then <br \/>\nvSelected = &quot;selected&quot; <br \/>\nEnd If <\/p>\n<p>OptionTag = &quot;&lt;option &quot; &amp; vSelected &amp; &quot;&gt;&quot; &amp; _ <br \/>\nServer.<a rel=\"nofollow\" href=\"http:\/\/www.jzxue.com\/wangyesheji\/html\/\" target=\"_blank\"><font color=\"#333333\">Html<\/font><\/a>Encode(vChoice) &amp; &quot;&lt;\/option&gt;&quot; &amp; vbCrLf <\/p>\n<p>End Function <\/p>\n<p>Function IsChecked(vTrue) <br \/>\nIf vTrue Then <br \/>\nIsChecked = &quot;checked&quot; <br \/>\nEnd If <br \/>\nEnd Function <\/p>\n<p>Function BookOptions(vXlFile) <br \/>\nDim vServerFolder <br \/>\nDim oFs, oFolder, oFile <\/p>\n<p>Dim vSelected <\/p>\n<p>vServerFolder = Server.MapPath(&quot;.&quot;) <\/p>\n<p>Set oFs = Server.CreateObject(&quot;Scripting.FileSystemObject&quot;) <br \/>\nSet oFolder = oFs.GetFolder(vServerFolder) <\/p>\n<p>For Each oFile in oFolder.Files <br \/>\nIf oFile.Type = &quot;Microsoft Excel Worksheet&quot; Then <br \/>\nvSelected = (oFile.Name = vXlFile) <\/p>\n<p>BookOptions = BookOptions &amp; _ <br \/>\nOptionTag(oFile.Name, vSelected) <br \/>\nEnd If <br \/>\nNext <\/p>\n<p>Set oFolder = Nothing <br \/>\nSet oFs = Nothing <\/p>\n<p>End Function <\/p>\n<p>Function NamedRangeOptions(oConn, vXlRange, vTableType) <br \/>\nDim oSchemaRs <br \/>\nDim vSelected <\/p>\n<p>NamedRangeOptions = OptionTag(Empty, Empty) <\/p>\n<p>If TypeName(oConn) = &quot;Connection&quot; Then <br \/>\nSet oSchemaRs = oConn.OpenSchema(adSchemaTables) <\/p>\n<p>Do While Not oSchemaRs.EOF <br \/>\nIf oSchemaRs(&quot;TABLE_TYPE&quot;) = vTableType Then <br \/>\nvSelected = (oSchemaRs(&quot;TABLE_NAME&quot;) = vXlRange) <br \/>\nNamedRangeOptions = NamedRangeOptions &amp; _ <br \/>\nOptionTag(oSchemaRs(&quot;TABLE_NAME&quot;), vSelected) <\/p>\n<p>End If <\/p>\n<p>oSchemaRs.MoveNext <br \/>\nLoop <\/p>\n<p>End If <br \/>\nEnd Function <\/p>\n<p>Function DataTable(oConn, vXlRange, vXlHasHeadings) <br \/>\nOn Error Resume Next <\/p>\n<p>&#8216; from OleDbVbc.inc <br \/>\nConst DB_E_ERRORSINCOMMAND = &amp;H80040E14 <\/p>\n<p>Dim oRs, oField <br \/>\nDim vThTag, vThEndTag <\/p>\n<p>If vXlHasHeadings Then <br \/>\nvThTag = &quot;&lt;th&gt;&quot; <br \/>\nvThEndTag = &quot;&lt;\/th&gt;&quot; <br \/>\nElse <br \/>\nvThTag = &quot;&lt;td&gt;&quot; <br \/>\nvThEndTag = &quot;&lt;\/td&gt;&quot; <br \/>\nEnd If <\/p>\n<p>DataTable = &quot;&lt;table border=1&gt;&quot; <\/p>\n<p>If TypeName(oConn) = &quot;Connection&quot; Then <br \/>\nSet oRs = oConn.Execute(&quot;[&quot; &amp; vXlRange &amp; &quot;]&quot;) <\/p>\n<p>If oConn.Errors.Count &gt; 0 Then <br \/>\nFor Each oConnErr in oConn.Errors <br \/>\nIf oConnErr.Number = DB_E_ERRORSINCOMMAND Then <br \/>\nDataTable = DataTable &amp; _ <br \/>\n&quot;&lt;tr&gt;&lt;td&gt;No such range :&lt;\/td&gt;&lt;th&gt;&quot; &amp; vXlRange &amp; &quot;&lt;\/th&gt;&lt;\/tr&gt;&quot; <br \/>\nElse <br \/>\nDataTable = DataTable &amp; _ <br \/>\n&quot;&lt;tr&gt;&lt;td&gt;&quot; &amp; oConnErr.Description &amp; &quot;&lt;\/td&gt;&lt;\/tr&gt;&quot; <br \/>\nEnd If <br \/>\nNext <br \/>\nElse <br \/>\nDataTable = DataTable &amp; &quot;&lt;tr&gt;&quot; <\/p>\n<p>For Each oField in oRs.Fields <br \/>\nDataTable = DataTable &amp; vThTag &amp; oField.Name &amp; vThEndTag <br \/>\nNext <\/p>\n<p>DataTable = DataTable &amp; &quot;&lt;\/tr&gt;&quot; <\/p>\n<p>Do While Not oRs.Eof <br \/>\nDataTable = DataTable &amp; &quot;&lt;tr&gt;&quot; <\/p>\n<p>For Each oField in oRs.Fields <br \/>\nDataTable = DataTable &amp; &quot;&lt;td&gt;&quot; &amp; oField.Value &amp; &quot;&lt;\/td&gt;&quot; <br \/>\nNext <\/p>\n<p>DataTable = DataTable &amp; &quot;&lt;\/tr&gt;&quot; <br \/>\noRs.MoveNext <br \/>\nLoop <\/p>\n<p>End If <\/p>\n<p>Set oRs = Nothing <br \/>\nElse <\/p>\n<p>DataTable = DataTable &amp; &quot;&lt;tr&gt;&lt;td&gt;File locked by another <a rel=\"nofollow\" href=\"http:\/\/www.jzxue.com\/tag\/Application\/\" target=\"_blank\"><font color=\"#333333\">application<\/font><\/a> or otherwise not <a rel=\"nofollow\" href=\"http:\/\/www.jzxue.com\/shujuku\/\" target=\"_blank\"><font color=\"#333333\">access<\/font><\/a>ible. Cannot continue.&lt;\/td&gt;&lt;\/tr&gt;&quot; <br \/>\nEnd If <\/p>\n<p>DataTable = DataTable &amp; &quot;&lt;\/table&gt;&quot; <br \/>\nEnd Function <\/p>\n<p>\n&#8216; &#8211;main&#8211; <br \/>\n%&gt; <br \/>\n&lt;html&gt; <br \/>\n&lt;head&gt; <br \/>\n&lt;title&gt;Read Excel&lt;\/title&gt; <br \/>\n&lt;SCRIPT LANGUAGE=<a rel=\"nofollow\" href=\"http:\/\/www.jzxue.com\/wangzhankaifa\/javascript-ajax\/\" target=\"_blank\"><font color=\"#333333\">javascript<\/font><\/a>&gt; <br \/>\n&lt;!&#8211; <br \/>\nfunction XlBook_onchange(theForm) { <br \/>\nwith (theForm) { <br \/>\nXlSheet.selectedIndex = 0; <br \/>\nXlSheet.disabled = true; <br \/>\nXlNamedRange.selectedIndex = 0; <br \/>\nXlNamedRange.disabled = true; <br \/>\nXlTypedRange.value = &quot;A:IV&quot;; <br \/>\n} <br \/>\n} <\/p>\n<p>function XlSheet_onchange(theForm) { <br \/>\nwith (theForm) { <br \/>\nXlNamedRange.selectedIndex = 0; <br \/>\nXlTypedRange.value = XlSheet.options[XlSheet.selectedIndex].text; <br \/>\n} <br \/>\n} <\/p>\n<p>function XlNamedRange_onchange(theForm) { <br \/>\nwith (theForm) { <br \/>\nXlSheet.selectedIndex = 0; <br \/>\nXlTypedRange.value = XlNamedRange.options[XlNamedRange.selectedIndex].text; <br \/>\n} <br \/>\n} <\/p>\n<p>function XlTypedRange_onchange(theForm) { <br \/>\nwith (theForm) { <br \/>\nXlSheet.selectedIndex = 0; <br \/>\nXlNamedRange.selectedIndex = 0; <br \/>\n} <br \/>\n} <\/p>\n<p>\/\/&#8211;&gt; <br \/>\n&lt;\/SCRIPT&gt; <br \/>\n&lt;\/head&gt; <br \/>\n&lt;body&gt; <br \/>\n&lt;% <br \/>\nDim vXlFile, vXlFilePath <br \/>\nDim vXlRange, vXlHasHeadings <br \/>\nDim vDisabled <\/p>\n<p>Dim vConnString <br \/>\nDim oConn, oConnErr <\/p>\n<p>Const adSchemaTables = 20 &#8216; from adovbs.inc <\/p>\n<p>CheckXlDriver &#8216; make sure it is working <\/p>\n<p>vXlFile = Request(&quot;XlBook&quot;) <\/p>\n<p>If vXlFile &lt;&gt; Empty Then <\/p>\n<p>vXlRange = Request(&quot;XlTypedRange&quot;) <\/p>\n<p>If vXlRange = Empty Then <br \/>\nvXlRange = &quot;A:IV&quot; <br \/>\nElse <br \/>\nvXlRange = Replace(vXlRange, &quot;!&quot;, &quot;$&quot;) <br \/>\nEnd If <\/p>\n<p>vXlHasHeadings = Request(&quot;XlHasHeadings&quot;) <\/p>\n<p>&#8216; establish connection <br \/>\nvXlFilePath = Server.MapPath(vXlFile) <br \/>\nvConnString = &quot;DRIVER={Microsoft Excel Driver (*.xls)};ReadOnly=1;DBQ=&quot; &amp; _ vXlFilePath <\/p>\n<p>Set oConn = GetConnection(vConnString) <\/p>\n<p>Else <br \/>\nvDisabled = &quot;disabled&quot; <br \/>\nEnd If <\/p>\n<p>%&gt; <br \/>\n&lt;form name=MyForm method=&quot;<a rel=\"nofollow\" href=\"http:\/\/www.jzxue.com\/tag\/post\/\" target=\"_blank\"><font color=\"#333333\">POST<\/font><\/a>&quot; action=&quot;&lt;%=Request.ServerVariables(&quot;SCRIPT_NAME&quot;)%&gt;&quot;&gt; <br \/>\n\u3000&lt;table border=&quot;1&quot; width=&quot;100%&quot;&gt; <br \/>\n\u3000\u3000&lt;tr&gt; <br \/>\n\u3000\u3000\u3000&lt;th&gt;Workbook :&lt;\/th&gt; <br \/>\n\u3000\u3000\u3000&lt;td&gt; <br \/>\n\u3000\u3000\u3000&lt;select name=&quot;XlBook&quot; LANGUAGE=javascript onchange=&quot;return XlBook_onchange(MyForm)&quot;&gt; <br \/>\n\u3000\u3000\u3000\u3000&lt;%= BookOptions(vXlFile) %&gt; <br \/>\n\u3000\u3000\u3000\u3000&lt;\/select&gt;&lt;\/td&gt; <br \/>\n\u3000\u3000\u3000&lt;td align=&quot;center&quot;&gt;Worksheet :&lt;\/td&gt; <br \/>\n\u3000\u3000\u3000&lt;td&gt;&lt;select &lt;%=vDisabled%&gt; name=&quot;XlSheet&quot; LANGUAGE=javascript onchange=&quot;return XlSheet_onchange(MyForm)&quot;&gt; <br \/>\n\u3000\u3000\u3000\u3000&lt;%= NamedRangeOptions(oConn, vXlRange, &quot;SYSTEM TABLE&quot;) %&gt; <br \/>\n\u3000\u3000\u3000\u3000&lt;\/select&gt;&lt;\/td&gt; <br \/>\n\u3000\u3000&lt;\/tr&gt; <br \/>\n&lt;tr&gt; <br \/>\n\u3000\u3000\u3000&lt;th&gt;Range :&lt;\/th&gt; <br \/>\n\u3000\u3000\u3000&lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;XlTypedRange&quot; LANGUAGE=javascript onchange=&quot;return XlTypedRange_onchange(MyForm)&quot; <br \/>\n\u3000\u3000\u3000\u3000value =&quot;&lt;%= vXlRange %&gt;&quot;&gt;&lt;\/td&gt; <br \/>\n\u3000\u3000\u3000&lt;td align=&quot;center&quot;&gt;Named Range :&lt;\/td&gt; <br \/>\n\u3000\u3000\u3000&lt;td&gt;&lt;select &lt;%=vDisabled%&gt; name=&quot;XlNamedRange&quot; LANGUAGE=javascript onchange=&quot;return XlNamedRange_onchange(MyForm)&quot;&gt; <br \/>\n\u3000\u3000\u3000\u3000&lt;%= NamedRangeOptions(oConn, vXlRange, &quot;TABLE&quot;) %&gt; <br \/>\n\u3000\u3000\u3000\u3000&lt;\/select&gt;&lt;\/td&gt; <br \/>\n\u3000\u3000&lt;\/tr&gt; <br \/>\n\u3000\u3000&lt;tr&gt; <br \/>\n\u3000\u3000\u3000&lt;th&gt; <br \/>\n\u3000\u3000\u3000\u3000&lt;p&gt; &lt;\/th&gt; <br \/>\n\u3000\u3000\u3000&lt;td colspan=&quot;3&quot;&gt; <br \/>\n\u3000\u3000\u3000\u3000&lt;input type=&quot;checkbox&quot; name=&quot;XlHasHeadings&quot; <br \/>\n\u3000\u3000\u3000\u3000&lt;%= IsChecked(vXlHasHeadings) %&gt; <br \/>\n\u3000\u3000\u3000\u3000value=&quot;True&quot;&gt; Show first row as column headings&lt;\/td&gt; <br \/>\n\u3000\u3000&lt;\/tr&gt; <br \/>\n\u3000\u3000&lt;tr&gt; <br \/>\n\u3000\u3000\u3000&lt;th&gt; <br \/>\n\u3000\u3000\u3000\u3000&lt;p&gt; &lt;\/th&gt; <br \/>\n\u3000\u3000\u3000&lt;td colspan=3&gt; <br \/>\n\u3000\u3000\u3000\u3000&lt;a href=&lt;%= vXlFile %&gt;&gt;&lt;%= vXlFile %&gt;&lt;\/a&gt; <br \/>\n\u3000\u3000\u3000&lt;\/td&gt; <br \/>\n\u3000\u3000&lt;\/tr&gt; <br \/>\n\u3000&lt;\/table&gt; <br \/>\n\u3000&lt;input type=&quot;submit&quot; value=&quot;Submit&quot; name=&quot;cmdSubmit&quot;&gt;\u3000 <br \/>\n\u3000&lt;input type=&quot;reset&quot; value=&quot;Reset&quot; name=&quot;cmdReset&quot;&gt; <br \/>\n&lt;\/form&gt;&lt;hr&gt; <br \/>\n&lt;% <br \/>\nIf vXlRange &lt;&gt; Empty Then <br \/>\nResponse.Write DataTable(oConn, vXlRange, vXlHasHeadings) <br \/>\nEnd If <br \/>\n%&gt; <br \/>\n&lt;\/body&gt; <br \/>\n&lt;\/html&gt;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4e0b\u9762\u5373\u662f\u7528ASP\u521b\u5efa(\u751f\u6210)PDF\u6587\u4ef6\u7684\u4ee3\u7801 &lt;% Option Explicit Sub CheckXlDriver() On Error Resume Next Dim vConnString Dim oConn, oErr &#038;#&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"topic":[],"class_list":["post-774","post","type-post","status-publish","format-standard","hentry","category-technology"],"_links":{"self":[{"href":"http:\/\/www.xiaoyebailong.com\/index.php\/wp-json\/wp\/v2\/posts\/774","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.xiaoyebailong.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.xiaoyebailong.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.xiaoyebailong.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.xiaoyebailong.com\/index.php\/wp-json\/wp\/v2\/comments?post=774"}],"version-history":[{"count":1,"href":"http:\/\/www.xiaoyebailong.com\/index.php\/wp-json\/wp\/v2\/posts\/774\/revisions"}],"predecessor-version":[{"id":66627,"href":"http:\/\/www.xiaoyebailong.com\/index.php\/wp-json\/wp\/v2\/posts\/774\/revisions\/66627"}],"wp:attachment":[{"href":"http:\/\/www.xiaoyebailong.com\/index.php\/wp-json\/wp\/v2\/media?parent=774"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.xiaoyebailong.com\/index.php\/wp-json\/wp\/v2\/categories?post=774"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.xiaoyebailong.com\/index.php\/wp-json\/wp\/v2\/tags?post=774"},{"taxonomy":"topic","embeddable":true,"href":"http:\/\/www.xiaoyebailong.com\/index.php\/wp-json\/wp\/v2\/topic?post=774"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}