Я работаю над проектом, который динамически создает HTML-таблицу с JavaScript.После того, как эта таблица создана, я должен быть в состоянии экспортировать ее, чтобы преуспеть с помощью нажатия кнопки.Я уже попробовал несколько вещей, но они не сработали для меня.
Я попытался выполнить простой экспорт из JavaScript, создав объект Active X, но этот параметр заблокированв IE, поэтому наши браузеры не будут работать с Active X.
Я пытался экспортировать в Excel из функции кода, используя класс HttpContext, чтобы преуспеть, но так как таблица создается динамически, сервер не 'не вижу этого.
Мой последний метод, и я был уверен, что это сработает, я использовал AJAX через метод страницы для экспорта таблицы в Excel.Я собирался создать массив таблицы в javascript и передать его методу страницы.Но прежде чем я добрался до этого шага, я создал метод страницы, который экспортировал простой файл «Test» в Excel.Он работал как метод, вызываемый нажатием кнопки, поэтому я подумал, что это будет и с методом страницы.Это не :( Он запускает и завершает метод страницы, но не открывает Excel или ничего не экспортирует. Никаких ошибок и функция успеха не выполняется.
Вот код:
<System.Web.Service.WebMethod()>
Public Shared Function exportTable(ByVal title As String) As String
HttpContext.Current.Response.ClearContext()
HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename="TEST.xls")
HttpContext.Current.Response.ContentType = "application/vnd.ms-excel"
HttpContext.Current.Response.Write("<?xml version='1.0'?>")
HttpContext.Current.Response.Write("<ss:Workbook xmlns:ss='urn:schemas-microsoft-com:office:spreadsheet'>")
HttpContext.Current.Response.Write("<ss:Worksheet ss:Name='sheet1'>")
HttpContext.Current.Response.Write("<ss:Table>")
HttpContext.Current.Response.Write("<ss:Row>")
HttpContext.Current.Response.Write("<ss:Cell><ss:Data ss:Type='String'>TEST</ss:Data></ss:Cell>")
HttpContext.Current.Response.Write("</ss:Row>")
HttpContext.Current.Response.Write("</ss:Table>")
HttpContext.Current.Response.Write("</ss:Worksheet>")
HttpContext.Current.Response.Write("</ss:Workbook>")
HttpContext.Current.ApplicationInstance.CompleteRequest()
Return 0
End Function
Мой метод вызова страницы:
function exportToExcel(title) {
PageMethods.exportTable(title, exportSuccess, exportFailure)
}
Функция exportSuccess - это простое предупреждение, которое запускается. Я понимаю, что это означает, что pageMethod выполняется без ошибок, но этоон не может открыть Excel или ... что-то.
Я в конечном итоге хочу передать массив и цикл по нему, чтобы добавить строки и данные. Я сделал это с нединамической таблицей, и это работаетЯ также собираюсь использовать заголовок для определения имени файла, но по причинам тестирования я назвал его TEST.xls.
Я скопировал и вставил код HttpContext в событие нажатия кнопки, и это сработало.хорошо со статической таблицей, так что я не думаю, что с этим возникнут какие-либо проблемы. Но я знаю, что я ошибаюсь.
Наверное, мой вопрос - может ли экспорт PageMethod превзойти или использовать класс HttpContext? Есть ли ставкаБолее простой способ сделать это?
Имейте в виду, что я не могу использовать объекты ActiveX, и все клиенты должны использовать IE.
Спасибо за вашу помощь, и я извиняюсь, еслиэто уже было покрыто.Я искал, но ничего не нашел.Если да, не могли бы вы указать мне на пост?