Вывод данных в Excel при изменяемых исходных данных и формах вывода.

Автор Тема: Вывод данных в Excel при изменяемых исходных данных и формах вывода.  (Прочитано 32319 раз)

0 Пользователей и 3 Гостей просматривают эту тему.

Оффлайн Владимир ШуАвтор темы

  • ADN Club
  • *****
  • Сообщений: 624
  • Карма: 158
    • ПГСу Бложик
Re: Вывод данных в xlsx
« Ответ #15 : 20-01-2014, 21:05:48 »
 MS Excel не тримет данные самостоятельно и потому вываливается! OOorg или LiberOfice  справляются с этим самостоятельно.
А поэтому для ячеек типа namber нужно предусмотреть очистку данных от лишних пробелов.

          <Cell>
          <!-- Это очень важно! -->
            <Data ss:Type="Number">
              <xsl:value-of select="normalize-space(substring-before(string(), ' '))" />
            </Data>
          </Cell>

Оффлайн bargool

  • ADN Club
  • ***
  • Сообщений: 111
  • Карма: 6
Re: Вывод данных в xlsx
« Ответ #16 : 21-01-2014, 14:31:08 »
Для чтения/генерации готовых xlsx без наличия экселя есть ещё OpenXML SDK от майкрософт. Удобно тем, что можно использовать LINQ, и оно строго типизировано.
Алексей

Оффлайн Владимир ШуАвтор темы

  • ADN Club
  • *****
  • Сообщений: 624
  • Карма: 158
    • ПГСу Бложик
Re: Вывод данных в xlsx
« Ответ #17 : 21-01-2014, 15:26:21 »
Вы не внимательно читали первое сообщение. Вот это предложение:
Цитировать
При этом структура исходных данных может меняться и соответственно таблица так же должна меняться. Очевидно что где то вне программы должна быть описана структура данных и куда/как их распихивать.

Глубоко в Open XML SDK я не залезал, ограничился http://habrahabr.ru/post/109820/
Как я понял, Open XML SDK позволяет получить код по уже имеющемуся документу/шаблону. Вот только если я захочу подправить формулу в документе, мне перекомпилировать всю программу?

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Вывод данных в xlsx
« Ответ #18 : 21-01-2014, 15:42:22 »
если я захочу подправить формулу в документе, мне перекомпилировать всю программу?
А это смотря как написать. Если подобные вещи ты не зашиваешь в коде, а хранишь во внешнем файле настроек и читаешь их оттуда по мере необходимости, то не придётся.

Оффлайн bargool

  • ADN Club
  • ***
  • Сообщений: 111
  • Карма: 6
Re: Вывод данных в xlsx
« Ответ #19 : 21-01-2014, 15:48:19 »
Почему же. Используйте в качестве шаблонов xlsx-файлы. Нужно что там поменять - меняйте в шаблоне. При этом адреса ячеек для заполнения прописывайте в отдельном xml-файле. Это если формулу поменять, а вот если структуру данных - нужно получше подумать, но тоже реализуемо без особых велосипедов, ИМХО
Алексей

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Вывод данных в xlsx
« Ответ #20 : 21-01-2014, 15:58:57 »
Используйте в качестве шаблонов xlsx-файлы
И насколько же корректно LibreOffice будет работать с xlsx? Я помню был свидетелем (неоднократно) различного рода проблем, как по части форматирования, так и по части неуспешного (порой) открытия файла. Сейчас точно не помню, но кажется в MS Excel не удавалось открыть xls файл, отредактированный в LibreOffice, а те, что открывались - нередко имели вид отличный от того, который отображается в LibreOffice (порой отличия не существенны, но тем не менее).

Далее... Насколько я знаю, у автора темы повсеместно используется именно LibreOffice, однако весьма вероятно, что результат ему придётся передать в стороннюю организацию, которая использует как раз MS Excel.

Кроме того, похоже что ты не уловил основную "фичу", желаемую автором: отделить содержимое от представления. Именно это он получает в случае использования XML + XSLT.

Оффлайн Владимир ШуАвтор темы

  • ADN Club
  • *****
  • Сообщений: 624
  • Карма: 158
    • ПГСу Бложик
Re: Вывод данных в xlsx
« Ответ #21 : 21-01-2014, 16:02:17 »
Хорошо, более радикальный пример:
У меня изменился состав исходных данных и форма таблицы куда выводить данные.
Пример:
Сейчас я считаю армирование и вывожу данные в соответствии с по  ГОСТ 21.101-97. ПРИЛОЖЕНИЕ Ж. Форма 7,
а захочу использовать программу и для составления спецификаций трубопроводов по ГОСТ 21.401-88. Приложение 9. Спецификация трубопровода

Применение xsl мне это позволяет, при этом менять программу нет никакой необходимости, нужно будет просто составить новый xsl файл.

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Вывод данных в xlsx
« Ответ #22 : 21-01-2014, 16:03:34 »
Вот именно о подобных ситуациях я и писал выше :)