У меня есть страница asp.net, которая генерирует отчет. К лучшему или к худшему, вся вещь создается с помощью вложенных таблиц. Я могу экспортировать страницу в Excel, но я теряю все свое форматирование (не могу установить ширину столбцов и т.д.). Есть ли способ справиться с этим? Я открыт для добавления каких-либо тупых тегов MS Office, которые требуются для его html-стороны.
Если это не осуществимо, и если у кого-то есть другие идеи, требование состоит в том, чтобы пользователям нужен отчет, который:
a) Они могут вручную коснуться некоторых данных о персонализации/области.
b) Нужно скрывать/показывать столбцы на основе местоположения пользователя
c) Требуется выполнить запуск с веб-сайта.
Приветствуется любая помощь или рекомендации по альтернативному подходу.
Спасибо Джо
К сожалению, вы действительно не можете использовать сторонний инструмент.
Если у конечных пользователей есть Office 2007+, вы можете использовать открытый формат XML.
Если вы идете на сторонний маршрут, они, как правило, довольно дороги, не менее $130
Проверьте этот поток на этом
Хотя вы можете скрывать/показывать столбцы в вашем коде, чтобы манипулировать столбцами перед экспортом, это не очень важно, просто форматирование внешнего вида будет сложным.
Код ниже работает для меня и сохраняет все форматирование таблиц. Исходная html-таблица должна иметь атрибут runat = "Server" и идентификатор для этого, очевидно.
По существу, он создает новую (фиктивную) форму, которая содержит только вашу таблицу и записывает ее в файл excel. Если вы используете Excel 2007, вы получите сообщение о том, что "файл, который вы пытаетесь открыть, находится в другом формате, чем тот, который указан расширением", но вы можете спокойно проигнорировать это и сказать "да", который вы хотите открыть он.
Public Sub exportTableExcel(ByVal aTable, ByVal filename)
Dim sw As New StringWriter()
Dim htw As New HtmlTextWriter(sw)
HttpContext.Current.Response.ClearContent()
HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" & filename)
HttpContext.Current.Response.ContentType = "application/vnd.xls"
HttpContext.Current.Response.Charset = ""
' Create a form to contain the table
Dim frm As New HtmlForm()
aTable.Parent.Controls.Add(frm)
frm.Attributes("runat") = "server"
'prevent additional code from being exported
frm.attributes("maintainScrollPositionOnPostBack") = "false"
frm.Controls.Add(aTable)
frm.RenderControl(htw)
HttpContext.Current.Response.Write(sw.ToString())
HttpContext.Current.Response.End()
frm.Dispose()
htw.Dispose()
sw.Dispose()
End Sub
SpreadsheetGear для .NET позволит вам создавать форматированные книги Excel из ASP.NET.
Вы можете увидеть наши живые ASP.NET-образцы здесь и загрузить бесплатную пробную версию здесь.
Отказ от ответственности: у меня есть SpreadsheetGear LLC