2010-02-09 2 views
2

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

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

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

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

c) Необходимо выполнить запуск с веб-сайта.

Любая помощь или рекомендации для альтернативного подхода были бы весьма полезными.

Благодаря Джо

ответ

2

Вы не можете на самом деле без инструмента третьей стороны, к сожалению.

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

Microsoft Open XML

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

Проверить это Stack Overflow нить на этом

How can I read MS Office files in a server without installing MS Office and without using Interop Library?

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

+0

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

0

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

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

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

0

ниже код работает для меня, и сохраняет все таблицы форматирования. В исходной таблице html должен быть атрибут runat = «Сервер» и идентификатор для этого, очевидно.

По существу, он создает новую (фиктивную) форму, которая содержит только вашу таблицу и записывает ее в файл 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 
Смежные вопросы