Как я могу отправить содержимое таблицы или результаты SQL-запроса в буфер обмена со страницы asp? - PullRequest
1 голос
/ 06 мая 2009

В интернете много примеров подобных вещей. Но никто из них не работает в Firefox. Поэтому я решил поставить задачу для пользователей переполнения стека.

По сути, мне нужен очень простой в использовании способ для пользователя страницы, чтобы получить результаты запроса в буфер обмена, чтобы они могли вставить его в Excel.

Это может быть либо получение данных из таблицы HTML (созданной по запросу)

Или отправьте результаты непосредственно в буфер обмена (в формате, читаемом Excel)

У меня есть интранет со многими страницами asp. Некоторые из них генерируют довольно большие таблицы, а некоторые из них затем копируются в Excel. в настоящее время пользователь должен щелкнуть внутри верхней левой ячейки, затем прокрутить страницу вниз и переместить курсор за конец таблицы. Если они не сделают это правильно (в Firefox), Excel не будет правильно читать данные.

Я хочу, чтобы они просто могли нажать кнопку, чтобы они стали лучше, нажмите на ячейку a1 и ctrl-v. Данные должны отображаться правильно разделенными на столбцы и строки (форматирование не имеет значения)

Есть идеи?

Я открыт для методов ASP или Javascript. И он должен работать как в IE, так и в Firefox (3)

EDIT

Я выбрал самый простой вариант из ответов (у меня может быть много страниц, чтобы «сделать», поэтому самый простой будет лучшим.

В форме ...

Send results to excel <input type="checkbox" name="sendtoexcel">

В коде позже ...

if request.querystring("sendtoexcel") = "on" then

response.contenttype = "application/vnd.ms-excel"
Response.AddHeader "content-disposition","attachment; filename=fname.xls"

end if

Ответы [ 2 ]

2 голосов
/ 06 мая 2009

Во-первых, Excel имеет отличную поддержку для копирования / вставки объектов таблицы HTML. Вы должны увидеть, соответствует ли это вашим потребностям.

В противном случае я бы рекомендовал отправлять CSV-файл данных непосредственно из ASP непосредственно пользователю.

Я не проверял это, но это должно помочь вам в этом:

<%
Response.AddHeader "Content-Type", "application/octet-stream"
Response.AddHeader "Content-Disposition", "attachment; filename=myTable.csv"

Dim customers, c
customers = GetCustomerFromDb()

For Each c in customers
  Response.Write """" & c("Name") & ""","
  Response.Write """" & c("Email") & ""","
  Response.Write """" & c("Address") & ""","
  Response.Write """" & c("City") & ""","
  Response.Write vbCrLf
Next
%>

Вам нужно создать новую страницу с этим кодом, затем в своем интерфейсе у вас будет ссылка на эту страницу, которая загрузит CSV.

0 голосов
/ 06 мая 2009

Подход, который я бы использовал в настройках интрасети, заключается в том, чтобы иметь страницу ASP, которая отправляет таблицу в виде HTML, но устанавливает тип содержимого ответа "application / vnd.ms-excel".

Потенциально у вас будет три страницы:

  1. Страница включения, которая содержит код для создания таблицы HTML, начиная с
  2. страница просмотра, которая использует include для создания выходных данных таблицы, заключенных в другую разметку, такую ​​как навигация, и ссылку "отправить в Excel" (которая является ссылкой на страницу ниже)
  3. страница, которая устанавливает свой тип контента "application / vnd.ms-excel" и использует то же самое include для генерации вывода таблицы.

Теперь пользователь просто щелкает ссылку, и содержимое таблицы появляется в Excel.

Примечание: для лучшей работы вам необходимо добавить заголовок Content-Dispostion "filename = sensible.xls; attachment".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...