Я работаю над проектом, который динамически создает таблицу html с javascript. После того, как эта таблица будет создана, мне нужно будет экспортировать ее в Excel, нажав кнопку. Я уже пробовал несколько вещей, но они не работали для меня.Экспорт динамически созданной таблицы из javascript в Excel
Я попытался сделать простой экспорт из JavaScript путем создания активного объекта X, но эта настройка заблокирована в IE, поэтому наши браузеры не будут работать с активным X.
Я пытался экспортировать в Excel от функции позади кода с использованием класса HttpContext, но поскольку таблица создается динамически, сервер ее не видит.
Мой последний метод, и я был уверен, что это сработает, я использовал AJAX через pagemetod, чтобы экспортировать таблицу в excel. Я собирался создать массив таблицы в javascript и передать его в pagemethod. Но прежде чем я добрался до этого шага, я создал pagemethod, который экспортировал файл Simpe Test для Excel. Он работал как метод, вызванный нажатием кнопки, поэтому я решил, что это будет также с помощью pagemethod. Это не не :(Она работает и завершает pagemethod, но не открывает 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 выполняется без ошибок, но он не может открыть первенствовать или .. что-то.
В конечном итоге я хочу передать массив и пропустить его, чтобы добавить строки и данные. Я сделал это с нединамической таблицей, и она работает. Я также буду использовать заголовок для определения имени файла, но по причинам тестирования я назвал его TEST.xls.
Я скопировал и вставил код HttpContext в событие нажатия кнопки, и он отлично работал со статической таблицей, поэтому я не думаю, что с этим возникли проблемы. Но я, как известно, ошибался.
Я думаю, мой вопрос может экспортировать PageMethod, чтобы преуспеть или использовать класс HttpContext? Есть ли лучший/более простой способ сделать это?
Имейте в виду, что я не могу использовать объекты ActiveX, и все пользователи должны использовать IE.
Спасибо за вашу помощь, и я сожалею, если это уже было покрыто. Я искал, но ничего не нашел. Если да, не могли бы вы указать мне на этот пост?