下面即是用ASP创建(生成)PDF文件的代码
<%
Опция явная
Дополнительная проверкаXlDriver()
При ошибке Возобновить Далее
Тусклая строка vConnString
Дим оКонн, оЭрр
' попытаемся подключиться к файлу NUL:
vConnString = DRIVER={Драйвер Microsoft Excel (*.xls)};DBQ=NUL:
Установите oConn = CreateObject(ADODB.Connection)
oConn.Open vConnString
Для каждого oErr в oConn.Errors
' когда драйвер Excel сообщает об ошибке при создании файла,
', то он должен быть установлен и работать ;-))
Если oErr.NativeError = -5036 Тогда
Выход из подменю
Конец, если
Следующий
Поставщик или драйвер Response.Write недоступен. (Повторно) Установите MDAC.
Ответ.Запись шестнадцатеричного значения(Номер ошибки) & & Описание ошибки &
Для каждого oErr в oConn.Errors
Response.Write hex(oErr.Number) & & oErr.NativeError & & oErr.Description &
Следующий
Ответ.Конец
Конец субтитра
Функция GetConnection(vConnString)
При ошибке Возобновить Далее
Установите GetConnection = Server.CreateObject(ADODB.Connection)
GetConnection.Open vConnString
Если Номер ошибки <> 0 Тогда
Установить GetConnection = Ничего
Конец, если
Конечная функция
Функция OptionTag(vChoice,vTrue)
Затемнить vВыбрано
Если vTrue Тогда
vSelected = выбрано
Конец, если
OptionTag = <option & vSelected & > & _
Server.HtmlEncode(vChoice) & </option> & vbCrLf
Конечная функция
Функция IsChecked(vTrue)
Если vTrue Тогда
IsChecked = проверено
Конец, если
Конечная функция
Функция BookOptions(vXlFile)
Затемнить vServerFolder
Затемнить OFS, oFolder, oFile
Затемнить vВыбрано
vServerFolder = Server.MapPath(.)
Установите oFs = Server.CreateObject(Scripting.FileSystemObject)
Установите oFolder = oFs.GetFolder(vServerFolder)
Для каждого oFile в oFolder.Files
Если oFile.Type = Лист Microsoft Excel Тогда
vSelected = (oFile.Name = vXlFile)
BookOptions = BookOptions & _
OptionTag(oFile.Name, vSelected)
Конец, если
Следующий
Установить oFolder = Ничего
Набор oFs = Ничего
Конечная функция
Функция NamedRangeOptions(oConn, vXlRange, vTableType)
Тусклые схемы
Затемнить vВыбрано
NamedRangeOptions = OptionTag(Пусто, Пусто)
Если ИмяТипа(oConn) = Соединение Тогда
Установите oSchemaRs = oConn.OpenSchema(adSchemaTables)
Делайте, пока не oSchemaRs.EOF
Если oSchemaRs(TABLE_TYPE) = vTableType Тогда
vSelected = (oSchemaRs(TABLE_NAME) = vXlRange)
NamedRangeOptions = NamedRangeOptions & _
OptionTag(oSchemaRs(TABLE_NAME), vSelected)
Конец, если
oSchemaRs.MoveNext
Петля
Конец, если
Конечная функция
Функция DataTable(oConn, vXlRange, vXlHasHeadings)
При ошибке Возобновить Далее
' с сайта OleDbVbc.inc
Конст DB_E_ERRORSINCOMMAND = &H80040E14
Тусклый орс, поле
Тусклый vThTag, vThEndTag
Если vXlHasHeadings Тогда
vThTag = <th>
vThEndTag = </th>
Еще
vThTag = <td>
vThEndTag = </td>
Конец, если
DataTable = <граница таблицы=1>
Если ИмяТипа(oConn) = Соединение Тогда
Установите oRs = oConn.Execute([ & vXlRange & ])
Если oConn.Errors.Count > 0 Тогда
Для каждого oConnErr в oConn.Errors
Если oConnErr.Number = DB_E_ERRORSINCOMMAND Тогда
Таблица данных = Таблица данных & _
<tr><td>Такого диапазона нет:</td><th> & vXlRange & </th></tr>
Еще
Таблица данных = Таблица данных & _
<tr><td> & oConnErr.Description & </td></tr>
Конец, если
Следующий
Еще
DataTable = DataTable & <tr>
Для каждого oField в oRs.Fields
DataTable = DataTable & vThTag & oField.Name & vThEndTag
Следующий
DataTable = Таблица данных & </tr>
Делай, пока не oRs.Eof
DataTable = DataTable & <tr>
Для каждого oField в oRs.Fields
DataTable = DataTable & <td> & oField.Value & </td>
Следующий
DataTable = Таблица данных & </tr>
oRs.MoveNext
Петля
Конец, если
Установить oRs = Ничего
Еще
DataTable = DataTable & <tr><td>Файл заблокирован другим приложением или недоступен по другой причине. Невозможно продолжить.</td></tr>
Конец, если
DataTable = DataTable & </table>
Конечная функция
' --основной--
%>
<html>
<голова>
<title>Чтение Excel</title>
<ЯЗЫК СКРИПТА=javascript>
<!--
функция XlBook_onchange(theForm) {
с (Форма) {
XlSheet.selectedIndex = 0;
XlSheet.disabled = правда;
XlNamedRange.selectedIndex = 0;
XlNamedRange.disabled = правда;
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
Тусклый vDisabled
Тусклая строка vConnString
Дим oConn, oConnErr
Const adSchemaTables = 20 ' из adovbs.inc
CheckXlDriver 'убедимся, что он работает
vXlFile = Запрос (XlBook)
Если vXlFile <> Пусто Тогда
vXlRange = Запрос (XlTypedRange)
Если vXlRange = Пусто Тогда
vXlRange = A:IV
Еще
vXlRange = Заменить(vXlRange, !, $)
Конец, если
vXlHasHeadings = Запрос (XlHasHeadings)
'установить соединение
vXlFilePath = Server.MapPath(vXlFile)
vConnString = DRIVER={Драйвер Microsoft Excel (*.xls)};ReadOnly=1;DBQ= & _ vXlFilePath
Установите oConn = GetConnection(vConnString)
Еще
vDisabled = отключено
Конец, если
%>
<имя формы=Метод MyForm=POST action=<%=Request.ServerVariables(SCRIPT_NAME)%>>
<граница таблицы=1 ширина=100%>
<тр>
<th>Рабочая книга:</th>
<тд>
<select name=XlBook LANGUAGE=javascript onchange=return XlBook_onchange(MyForm)>
<%= BookOptions(vXlFile) %>
</select></td>
<td align=center>Рабочий лист:</td>
<td><select <%=vDisabled%> name=XlSheet LANGUAGE=javascript onchange=return XlSheet_onchange(MyForm)>
<%= NamedRangeOptions(oConn, vXlRange, СИСТЕМНАЯ ТАБЛИЦА) %>
</select></td>
</tr>
<тр>
<th>Диапазон:</th>
<td><input type=text name=XlTypedRange LANGUAGE=javascript onchange=return XlTypedRange_onchange(MyForm)
значение =<%= vXlRange %>></td>
<td align=center>Именованный диапазон:</td>
<td><select <%=vDisabled%> name=XlNamedRange LANGUAGE=javascript onchange=return XlNamedRange_onchange(MyForm)>
<%= NamedRangeOptions(oConn, vXlRange, TABLE) %>
</select></td>
</tr>
<тр>
<й>
<p> </th>
<td colspan=3>
<тип ввода=имя флажка=XlHasHeadings
<%= IsChecked(vXlHasHeadings) %>
value=True> Показывать первую строку как заголовки столбцов</td>
</tr>
<тр>
<й>
<p> </th>
<td colspan=3>
<a href=<%= vXlFile %>><%= vXlFile %></a>
</td>
</tr>
</таблица>
<тип ввода=значение отправки=имя отправки=cmdSubmit>
<тип ввода=значение сброса=имя сброса=cmdReset>
</форма><hr>
<%
Если vXlRange <> Пусто Тогда
Response.Write DataTable(oConn, vXlRange, vXlHasHeadings)
Конец, если
%>
</тело>
</html>