Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 развернуть сводную таблицу Excel'я при заливке в SQL  [new]
Voice2001
Member

Откуда:
Сообщений: 375
подскажите, как быть в таком случае:
от дистрибьюторов приходят екселевские отчеты в виде сводной таблицы. При заливке в СКЛ таким методом:
SELECT * 
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=e:\2\Отчет_2011_03.xls;IMEX=1;HDR=no', [Sheet])
данные видны в том же свернутом виде, что и на данный момент сохранены в екселе. Как можно выцепить все данные из такого файла? Т.е. полностью раскрытую таблицу.
21 май 11, 19:49    [10689078]     Ответить | Цитировать Сообщить модератору
 Re: развернуть сводную таблицу Excel'я при заливке в SQL  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Непонятен вопрос.
Есть плоские данные, допустим в Sheet1. Есть сводная в Sheet2 на основе Sheet1.
Что вам надо загрузить?

Мне кажется, вопрос выходит за рамки темы форума.
22 май 11, 02:15    [10689918]     Ответить | Цитировать Сообщить модератору
 Re: развернуть сводную таблицу Excel'я при заливке в SQL  [new]
Voice2001
Member

Откуда:
Сообщений: 375
вот в файле как раз плоских данных я не нашел...
есть один лист со сводной таблицей, поля которой можно развернуть...
зы. ексель 2003-й
22 май 11, 03:53    [10689942]     Ответить | Цитировать Сообщить модератору
 Re: развернуть сводную таблицу Excel'я при заливке в SQL  [new]
Диклевич Александр
Member

Откуда:
Сообщений: 612
Voice2001,

Так пусть присылают плоские данные тоже
22 май 11, 10:02    [10690080]     Ответить | Цитировать Сообщить модератору
 Re: развернуть сводную таблицу Excel'я при заливке в SQL  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Voice2001
вот в файле как раз плоских данных я не нашел...
Это как?
Т.е. в свойствах сводной таблицы не указан источник (Sheet (может скрытый?), внешний источник)?
22 май 11, 12:33    [10690289]     Ответить | Цитировать Сообщить модератору
 Re: развернуть сводную таблицу Excel'я при заливке в SQL  [new]
Nepenthe
Guest
Если в исходных данных менее 65535 строк, то можно развернуть сводную, дважды щелкнув по ячейке на пересечении столбца и строки с общими итогами:

Set rng = Wbook.Worksheets(WSheetName).Cells.SpecialCells(xlLastCell)
rng.ShowDetail = True

Линейные данные вылезут на отдельном листе. В свойствах сводной должны стоять галки "Общие итоги по строкам" и "Общие итоги по столбцам" (.ColumnGrand = True; .RowGrand = True)
22 май 11, 13:06    [10690351]     Ответить | Цитировать Сообщить модератору
 Re: развернуть сводную таблицу Excel'я при заливке в SQL  [new]
Voice2001
Member

Откуда:
Сообщений: 375
Mnior, похоже на внешний источник, т.к. скрытых листов там не нашел (Формат - Лист - Отобразить (пункт недоступен); или через редактор VBA - отображается только лист со сводной таблицей)
Плюс когда жмешь правой кнопкой мышки по этой таблице и выбираешь "Мастер сводных таблиц", затем "Назад", появляется кнопка "Получить данные..." и рядом надпись "Данные получены". Если нажать еще раз "Назад", в мастере появляется выбор, откуда брать данные - выбрано "во внешнем источнике данных"
Nepenthe, спасибо :) данные появились на новом листе
но как бы это все автоматизировано сделать? без втыкания макроса в екселевский файл руками
22 май 11, 15:22    [10690543]     Ответить | Цитировать Сообщить модератору
 Re: развернуть сводную таблицу Excel'я при заливке в SQL  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Voice2001
но как бы это все автоматизировано сделать? без втыкания макроса в екселевский файл руками
Есть такой язык - человеческий. Договаривайтесь убрать слабое звено - мол не надо ничего руками делать, дайте ту ссылку на внешний источник. И скажите что взамен они получат дополнительное время в ферму поиграть.
22 май 11, 22:23    [10691276]     Ответить | Цитировать Сообщить модератору
 Re: развернуть сводную таблицу Excel'я при заливке в SQL  [new]
Voice2001
Member

Откуда:
Сообщений: 375
Mnior
Договаривайтесь убрать слабое звено

там слишком много и долго надо договариваться (длинная цепочка пересылок этого док-та). Да и интересно, как это программно можно решить.
Возможно ли? Если да, то как?
23 май 11, 03:47    [10691977]     Ответить | Цитировать Сообщить модератору
 Re: развернуть сводную таблицу Excel'я при заливке в SQL  [new]
Nepenthe
Member

Откуда: N
Сообщений: 1
Voice2001, а воткнуть унифицированную процедуру редактирования файлов в базу - не вариант? Собственно, руки только один раз понадобятся :)
23 май 11, 06:37    [10692047]     Ответить | Цитировать Сообщить модератору
 Re: развернуть сводную таблицу Excel'я при заливке в SQL  [new]
Voice2001
Member

Откуда:
Сообщений: 375
Nepenthe, я только за
намекни, о чем конкретно ты?
23 май 11, 10:18    [10692516]     Ответить | Цитировать Сообщить модератору
 Re: развернуть сводную таблицу Excel'я при заливке в SQL  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Voice2001 ,
Если так лень разговаривать. Можешь тупо вызвать (sp_CmdShell) скрипт (vb или PS) перед заливкой.

Но хочу сказать, что договариваться должно начальство - это дело бизнеса, а требования вы можете и обязаны предъявлять. И скорее всего сделают без вопросов (хотя и долго), главное чтоб между твоим начальством и тобой не стояло другое слабое звено - бывший IT, ибо у них страх открыть рот врождённый.
Проблемы две:
  • Они подсядут - "Ну вы же ж смогли сделать в прошлый раз"
  • Скрипты будут периодически вываливаться - кривизна рук человеческих заложена в коде, коде ДНК. Вы хотите постоянно отвлекаться?
  • 23 май 11, 12:15    [10693377]     Ответить | Цитировать Сообщить модератору
     Re: развернуть сводную таблицу Excel'я при заливке в SQL  [new]
    Voice2001
    Member

    Откуда:
    Сообщений: 375
    Mnior, речь не о разговорах с начальством и еще кем-то
    речь о способах решения проблемы программным путем. Представим ситуацию, что, кроме меня, этот документ идет обычным манагерам, которые его смотрят. Если присылать им его в плоском виде, каждый раз им придется лезть по менюшкам и делать сводную.
    Зачем заставлять их это делать, если компутер (сервер) вполне сможет разворачивать сводную для себя сам?
    ЗЫ. на самом СКЛ развернуть таблицу никак нельзя? Точно только через запуск макроса?
    23 май 11, 16:25    [10695443]     Ответить | Цитировать Сообщить модератору
     Re: развернуть сводную таблицу Excel'я при заливке в SQL  [new]
    Mnior
    Member

    Откуда: Кишинёв
    Сообщений: 6724
    Voice2001
    о способах решения проблемы программным путем.
    Э-э-э. Мы не ищем лёгких путей?
    По большому счёту самое оптимальное, это когда не написано ни одной строчки кода и не делается излишеств.
    Реальность. Реальность может навязывать и приходится мириться.
    Но, адназначна, совершенно глупо всё программировать без рабора.
    Спорить нет смысла, это чисто ваши организационные проблемы.

    Voice2001
    Представим ситуацию ...
    Сферический коней целый вакуум. Бессмысленно говорить об несуществующих частностях.
    Voice2001
    этот документ идет обычным манагерам, которые его смотрят.
    Зачем? Зачем именно тот же? Зачем именно такой вывернутый документ? Почему нельзя подавать и данные и отображение одновременно?
    Любое зачем рвёт аргумент как грелку.

    Voice2001
    на самом СКЛ развернуть таблицу никак нельзя?
    Voice2001
    Зачем заставлять их это делать, если компутер (сервер) вполне сможет разворачивать сводную для себя сам?
    Однако небольшое противоречие.

    Повторюсь: не надо придумывать проблемы нужно от них избавляться.
    Можно ещё лекцию почитать о нелинейности влияния элементов на систему.

    Допустим вам безразлично на творящийся вокруг идиотизм, а по мне лучше пристрелить хромую кобылу.
    23 май 11, 20:29    [10696779]     Ответить | Цитировать Сообщить модератору
     Re: развернуть сводную таблицу Excel'я при заливке в SQL  [new]
    Voice2001
    Member

    Откуда:
    Сообщений: 375
    Mnior
    Voice2001
    на самом СКЛ развернуть таблицу никак нельзя?
    Voice2001
    Зачем заставлять их это делать, если компутер (сервер) вполне сможет разворачивать сводную для себя сам?
    Однако небольшое противоречие

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

    соглашусь только со второй частью. Вот для этого и нужно все сделать максимально просто для пользователя. От кого-то пришел документ в уже установленном виде (наша свернутая сводная таблица), на выходе получаем заполненную таблицу в СКЛ. В данном случае нужно сделать именно так.
    Если невозможно развернуть ексель программно (в чем я очень сильно сомневаюсь и пытаюсь найти решение), тогда будет разговор о смене формата файла. Иначе он (разговор) не имеет смысла - нужно, значит сделаем.
    Так есть ли варианты?
    23 май 11, 23:41    [10697382]     Ответить | Цитировать Сообщить модератору
     Re: развернуть сводную таблицу Excel'я при заливке в SQL  [new]
    Glory
    Member

    Откуда:
    Сообщений: 104751
    Voice2001
    Если невозможно развернуть ексель программно (в чем я очень сильно сомневаюсь и пытаюсь найти решение), тогда будет разговор о смене формата файла. Иначе он (разговор) не имеет смысла - нужно, значит сделаем.
    Так есть ли варианты?

    Если вы про TSQL,то там нет команд работы с внешними файлами
    24 май 11, 10:40    [10698467]     Ответить | Цитировать Сообщить модератору
     Re: развернуть сводную таблицу Excel'я при заливке в SQL  [new]
    Voice2001
    Member

    Откуда:
    Сообщений: 375
    Glory, т.е. остается только такой вариант(?):
    Mnior
    Voice2001 ,
    Можешь тупо вызвать (sp_CmdShell) скрипт (vb или PS) перед заливкой.
    24 май 11, 10:56    [10698601]     Ответить | Цитировать Сообщить модератору
     Re: развернуть сводную таблицу Excel'я при заливке в SQL  [new]
    Maxx
    Member [скрыт]

    Откуда:
    Сообщений: 24290
    ну и савсем укуреный вариант....

    Попробовать через sp_AOCreate создать обьект екселя и вставить туда скрипт на вба в макрос что его развернуть и пересохранить..но ето еще ото изврат...
    Есть еще идея - грузите через SSIS пакет и в нем перед заливкой в сиквел - приведите файл к нужному виду.
    24 май 11, 11:16    [10698748]     Ответить | Цитировать Сообщить модератору
     Re: развернуть сводную таблицу Excel'я при заливке в SQL  [new]
    Mnior
    Member

    Откуда: Кишинёв
    Сообщений: 6724
    Voice2001
    Вероятно вы не совсем меня поняли и неверно расставили приоритеты.
    Понял, шатл должен преобразовать навоз в топливо (кислород, водород), всё ради доставки на орбиту.

    Приоритеты самые прямые. Для простой работы пользователя необходимо надёжно работающая программа, следовательно необходимо надёжно приходящие данные. Следовательно ...

    Maxx
    ну и савсем укуреный вариант....
    24 май 11, 16:17    [10701189]     Ответить | Цитировать Сообщить модератору
     Re: развернуть сводную таблицу Excel'я при заливке в SQL  [new]
    Maxx
    Member [скрыт]

    Откуда:
    Сообщений: 24290
    Mnior,

    ну а по другому такое не назовеш,имхо
    24 май 11, 16:19    [10701199]     Ответить | Цитировать Сообщить модератору
     Re: развернуть сводную таблицу Excel'я при заливке в SQL  [new]
    Voice2001
    Member

    Откуда:
    Сообщений: 375
    Mnior, с такой логикой надежней космонавтов на орбиту с катапульты запускать - ни строчки кода и цель достигнута ;)
    24 май 11, 17:39    [10701829]     Ответить | Цитировать Сообщить модератору
     Re: развернуть сводную таблицу Excel'я при заливке в SQL  [new]
    Mnior
    Member

    Откуда: Кишинёв
    Сообщений: 6724
    Voice2001
    Mnior, с такой логикой надежней космонавтов на орбиту с катапульты запускать - ни строчки кода и цель достигнута ;)
    Жаль проект из пушки да на орбиту загнулся.
    24 май 11, 18:47    [10702323]     Ответить | Цитировать Сообщить модератору
    Все форумы / Microsoft SQL Server Ответить