Экспорт HTML в Excel без потери форматирования

2

У меня есть страница asp.net, которая генерирует отчет. К лучшему или к худшему, вся вещь создается с помощью вложенных таблиц. Я могу экспортировать страницу в Excel, но я теряю все свое форматирование (не могу установить ширину столбцов и т.д.). Есть ли способ справиться с этим? Я открыт для добавления каких-либо тупых тегов MS Office, которые требуются для его html-стороны.

Если это не осуществимо, и если у кого-то есть другие идеи, требование состоит в том, чтобы пользователям нужен отчет, который:

a) Они могут вручную коснуться некоторых данных о персонализации/области.

b) Нужно скрывать/показывать столбцы на основе местоположения пользователя

c) Требуется выполнить запуск с веб-сайта.

Приветствуется любая помощь или рекомендации по альтернативному подходу.

Спасибо Джо

Теги:
excel

3 ответа

2
Лучший ответ

К сожалению, вы действительно не можете использовать сторонний инструмент.

Если у конечных пользователей есть Office 2007+, вы можете использовать открытый формат XML.

Microsoft Open XML

Если вы идете на сторонний маршрут, они, как правило, довольно дороги, не менее $130

Проверьте этот поток на этом

Как я могу читать файлы MS Office на сервере без установки MS Office и без использования библиотеки Interop?

Хотя вы можете скрывать/показывать столбцы в вашем коде, чтобы манипулировать столбцами перед экспортом, это не очень важно, просто форматирование внешнего вида будет сложным.

  • 0
    Я закончил тем, что нарисовал то, что хотел на листе бумаги, и перепланировал ряды, и превратил себя в решение (которое, я надеюсь, мне никогда не придется обслуживать). Как только я собрал все это в одну таблицу, результат был приемлемым, но не большим.
0

Код ниже работает для меня и сохраняет все форматирование таблиц. Исходная 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
0

SpreadsheetGear для .NET позволит вам создавать форматированные книги Excel из ASP.NET.

Вы можете увидеть наши живые ASP.NET-образцы здесь и загрузить бесплатную пробную версию здесь.

Отказ от ответственности: у меня есть SpreadsheetGear LLC

Ещё вопросы

Сообщество Overcoder
Наверх
Меню