none
Экспорт в Excel [SP 2010] RRS feed

  • Вопрос

  • Доброго времени суток, уважаемый форум!

    Я уже 2 раза тут задавал интересующие и очень сложные для меня вопросы и получил просто ОФИГЕНСКИЕ ответы! Мне всё стало понятно, я всё отработал, ну короче, супер!)

    В общем, у меня стоит задача из существующих данных в списке (на SP офк) выбрать необходимые (какие конкретно должен вводить пользователь) и сформировать из них Excel-файл и как бы "скачать" его клиенту. - это было крактое описание моей задачи.

    Первое, что приходит в голову это кнопка "Экспорт в Excel", присутствующая на странице с любым списком. Но нет, она меня не устраивает, почему - указано ниже.

    ============================================================================

    То есть как это должно выглядеть со стороны пользователя:

    1. Зашёл на сайт.

    2. Посмотрел на таблицу (в смысле список, он называется План-график)

    вот она кстати:

    Тут достаточно много полей и они называются именно так, что они и делают. Каждая запись списка - это своего рода задача, она адресутеся какому-то из подразделений (они в конце списка, прим.: ДМ, РИВАЛИ, ООРИТ, ДЭФ и т.п. Так же они указываются в третьем поле, чтобы было понятно каким подразделениям адресована задача)

    3. Почитал, понял, что необходимо, перешёл на страницу Бизнесс-Планн, там ввёл в textBox нужное ему подразделение и нажал кнопку "Сформировать Бизнес-План".

    4. После этого ему выдался Excel-файл (то есть файл скачался к нему на компьютер). Пользователь его открыл и там данные по нужному ему подразделению со всеми задачами на текущий месяц. 

    То есть эксель-файл должен содержать задачи для ЗАДАННОГО подразделения (все, на текущий месяц из всего этого списка).

    ==============================================================================================

    Что мне нужно от форумчан ?

    1. Каким образом скачать пользователю файл? То есть вот он нажал на кнопку, а ему в ответочку файл загружается.

    2. Можно ли заложить "шаблонный Excel-файл"? То есть мне же данные нужно будет запихивать в него и он немного не стандартный получится. У меня будет в шапке поле для подписи ГенДира, да и в самом в нём объединения ячеек/выравнивание и т.п. То есть у меня будет где то на сервере лежать шаблонный Excel файл, который я буду заполнять.

    3. Использую стандартную библиотеку Excel (которая Microsoft.Office.Interop.Excel). Не использую сторонние, УДОБНЫЕ, потому что проблемы с подключением *.dll - файлов у меня через студию. Если подскажите как программно задать ячейке выравнивание или перенос текста - буду очень благодарен.

    4. Как сделать страницу, чтобы она была "там" (то есть на сайте) ? (так же буду благодарен если кинете страницу с кнопкой и текстБоксом, ибо в ASP.NET я 0, но очень хорошо знаю WinForms). Я раньше, когда делал проекты, создавал в студии (пустой SharePoint проект) папку layouts и создавал там страницу, на ней же и отрабатывал код. Теперь мне нужна страница, которая как бы будет всегда присутствовать на сайте и на ней будет код. 

    ============================================

    Было бы очень приятно, если б вы меня направили в нужном направлении. 

    Вроде бы всё.

    зы

    боюсь что указал не всё, что хотел спросить :/

    23 сентября 2012 г. 18:15

Ответы

  • Добрый день!

    Если решитесь всё разрабатывать, то (по вашим вопросам):

    1. Необходимо сделать например отдельную aspx страницу (лучше ashx), которая программным путём будет генерировать файл (по указанным в get-параметрах настройках) и возвращать его пользователю. Для корректной последней операции используйте:

    Response.Clear();
    Response.ContentType = "application/octet-stream";
    Response.AddHeader("Content-Disposition", "attachment; filename=" + documentTitle);
    Response.BinaryWrite(stream.ToArray());
    Response.Flush();
    Response.End();

    2. Генерировать файл нужно через OpenXML (доступно только для Office 2007-2013) (для разработки необходимо скачать SDK). Тогда и шаблон нужный сможете изначально заложить. Код для генерации файла может показаться не простым, но как правило в нём легко разобраться, по примерам.

    3. Опять же ищите по примерам. Есть ещё такой хак: ставим запись макроса, выполняем нужное действие, останавливаем запись макроса и смотрим его код (он будет на Visual Basic) и узнаём как сделать это действие кодом :).

    4. Для начала можете создать пустой проект SharePoint в Visual Studio, затем добавить в него Application Page. Оно и будет деплоиться в Layouts.

    Но я всё же рекомендовал бы делать как вам предложили ранее - использовать стандартный экспорт. В крайнем случае можно плагин к Excel написать, который будет доделывать некоторое форматирование...


    My contributions: SharePoint 2010 Solution Installer

    • Помечено в качестве ответа Roman Zhukov 28 сентября 2012 г. 13:20
    24 сентября 2012 г. 17:02

Все ответы

  • Я бы подумал в сторону использования стандартной кнопки "Экспорт в Excel" без доработок. В файле с экспортом уже проводить манипуляции с данными. Там пользователи уже сами смогут выбрать нужные им задачи. отфильтровать что надо, группировать, отформатировать, построить отчеты и ещё много чего. Такой вариант даст пользователям гибкость и избавить от необходимости какой-либо разработки, что очень важно в связи с имеющейся экспертизой.

    Высказанное мною здесь - мои личные взгляды, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.

    24 сентября 2012 г. 9:17
    Модератор
  • Я так же и сказал шефу. Он мне сказал что нет, на эту настройку обычный сотрудник будет тратить 3 лишних часа в неделю, в месяц день, в год 2 недели, к примеру и т.п. То есть раз есть программист он может сделать так, дабы упростить задачу сотрудникам...вот так вот.
    24 сентября 2012 г. 17:01
  • Добрый день!

    Если решитесь всё разрабатывать, то (по вашим вопросам):

    1. Необходимо сделать например отдельную aspx страницу (лучше ashx), которая программным путём будет генерировать файл (по указанным в get-параметрах настройках) и возвращать его пользователю. Для корректной последней операции используйте:

    Response.Clear();
    Response.ContentType = "application/octet-stream";
    Response.AddHeader("Content-Disposition", "attachment; filename=" + documentTitle);
    Response.BinaryWrite(stream.ToArray());
    Response.Flush();
    Response.End();

    2. Генерировать файл нужно через OpenXML (доступно только для Office 2007-2013) (для разработки необходимо скачать SDK). Тогда и шаблон нужный сможете изначально заложить. Код для генерации файла может показаться не простым, но как правило в нём легко разобраться, по примерам.

    3. Опять же ищите по примерам. Есть ещё такой хак: ставим запись макроса, выполняем нужное действие, останавливаем запись макроса и смотрим его код (он будет на Visual Basic) и узнаём как сделать это действие кодом :).

    4. Для начала можете создать пустой проект SharePoint в Visual Studio, затем добавить в него Application Page. Оно и будет деплоиться в Layouts.

    Но я всё же рекомендовал бы делать как вам предложили ранее - использовать стандартный экспорт. В крайнем случае можно плагин к Excel написать, который будет доделывать некоторое форматирование...


    My contributions: SharePoint 2010 Solution Installer

    • Помечено в качестве ответа Roman Zhukov 28 сентября 2012 г. 13:20
    24 сентября 2012 г. 17:02