Добро пожаловать, Гость. Для того, чтобы отвечать на сообщения и создавать новые темы, Вам необходимо зарегистрироваться, если Вы уже зарегистрированы, то войдите используя Ваши E-Mail и Пароль.
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
Экспорт прайса
Вставить объекты с фотографиями товаров можно, изменить шрифты и цвет ячейки тоже каким-то отдельным макросом или скриптом. Но группы товаров представляют собой дерево и их может быть не ограниченное количество. Так же не указано требуется ли пользователю комбинировать группы разных уровней вложенности.
Использовать для экспорта файл шаблона не подойдет, так как в конце прайс-листа должен быть еще какой-то текст, а количество строк прайса естественно зарание не известно.
Можно написать отдельный плагин и включить в него все пожелания пользователя.
Количество сообщений
9
Зарегистрирован:
27-09-2014, 21:24:42
Экспорт прайса
Цитата
Написал: support
Использовать для экспорта файл шаблона не подойдет, так как в конце прайс-листа должен быть еще какой-то текст, а количество строк прайса естественно зарание не известно.
Можно написать отдельный плагин и включить в него все пожелания пользователя.
1. А если принебречь текстом внизу прайса, можно ли использовать шаблон ?
2. Насколько я понял, при экспорте прайса СНАЧАЛА выполняется запрос который формирует строки для экспорта в EXCEL, а ЗАТЕМ какая-то недоступная пользователю процедура открывает новый EXCEL файл и переносит туда данные. Можно ли вмешаться в процесс переноса данных для того например чтобы VBA макросом или как-то еще изменить оформление формируемого документа ? К примеру название категории (я могу создать строку с определенным значением в какой-то ячейке) выделить жирным.
Ну или не закрывая готовый сформированный документ выполнить VBA скрипт. А уже потом закрыть файл.
Лучше бы конечно построчно, тогда картинки можно вставлять.
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
Стандартный экспорт в Excel из программы выполняет заранее подготовленный SQL-запрос на выборку набора данных, открывает COM-сервер Excel.Application и построчно экспортирует в него данные в виде строк. Если вы хотите сделать все сами, то вы можете например создать собственный VBScript и получить в нем данные выборки через ADODB или OLEDB:
Код
Dim oConn
Set oConn = CreateObject("ADODB.Connection")
oConn.Open "Driver={SQL Server};Server=127.0.0.1;Database=iNETsHOP;Uid=Administrator;Pwd="
'oConn.Open "Provider=SQLOLEDB;User ID=SA;Password=password;Initial Catalog="iNETsHOP_PL";Data Source="127.0.0.1"
Dim oRcordSet
Set oRcordSet = CreateObject("ADODB.Recordset")
oRcordSet.CursorType = 2
oRcordSet.LockType = 3
oRcordSet.Open "select G_ID, G_NAME from TBL_GOODS", oConn
'For Each Item In oRcordSet
' WScript.Echo Item.Value
'Next
Do While oRcordSet.EOF = 0
' Worksheets("Лист1").Range("A" & i).Value = oRcordSet.Fields("G_ID").Value
' Worksheets("Лист1").Range("B" & i).Value = oRcordSet.Fields("G_NAME").Value
oRcordSet.MoveNext
i = i + 1
Loop
'WScript.Echo i
В этот пример вы можете добавить подключение к Excel.Application и перенести любые данные из выборки на лист. Фотографии товаров наверное потребуется предварительно сохранить в файл, а затем добавить как объект рисунка из файла.
Количество сообщений
9
Зарегистрирован:
27-09-2014, 21:24:42
Цитата
Написал: support
Стандартный экспорт в Excel из программы выполняет заранее подготовленный SQL-запрос на выборку набора данных, открывает COM-сервер Excel.Application и построчно экспортирует в него данные в виде строк. Если вы хотите сделать все сами, то вы можете например создать собственный VBScript и получить в нем данные выборки через ADODB или OLEDB:
В этот пример вы можете добавить подключение к Excel.Application и перенести любые данные из выборки на лист. Фотографии товаров наверное потребуется предварительно сохранить в файл, а затем добавить как объект рисунка из файла.
Понятно.
Это в принципе реализуемо, но достаточно сложно.
Можно ли просто получить возможность выполнить некоторый VBA скрипт после уже загрузки данных в EXCEL но до закрытия документа ? По типу импорта прайсов.
И еще вопросик.
Шеф желает отмечать галочками те группы товаров, что войдут в прайс.
Возможно ли реализовать это в стандартном экспорте передавая выбранное из справочника не как один параметр, а перечень через запятую ?
Тогда в скрипте экспорта я могу применить IN (:параметр или список параметров).
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
Специфический экспорт в Эксель
В экспорте данных в Эксель не предусмотрено вызов макроса и его негде хранить.
Множественный выбор одного параметра в динамических наборах параметров так же не предусмотрен. Вы можете сделать заранее определенное количество однотипных параметров, например выбор 10-20 групп и формировать собственный список уже при экспорте.
Количество сообщений
64
Зарегистрирован:
11-11-2008, 04:35:57
Экспорт в Excel через VBS
Цитата
Написал: reddimonus
Это в принципе реализуемо, но достаточно сложно.
Можно ли просто получить возможность выполнить некоторый VBA скрипт после уже загрузки данных в EXCEL но до закрытия документа ? По типу импорта прайсов.
Ничего сложного нет. Вот за 30 минут переделал пример сценария VBS для экспорта в Эксель полей: код товара, Название, цена, основаная группа
Замените в примере имя сервера, базу данных, логин и пароль на свои.
Код
Dim oExcelApp, oWorkbook, oSheet
Dim oConn
sPriceEmpty = "C:\TEMP\price1.xls"
i = 6
Do While oRcordSet.EOF = 0
oSheet.Range("A" & i).Value = oRcordSet.Fields("G_ID").Value
oSheet.Range("B" & i).Value = oRcordSet.Fields("G_NAME").Value
oSheet.Range("C" & i).Value = oRcordSet.Fields("price").Value
oSheet.Range("D" & i).Value = oRcordSet.Fields("GR_FULL_NAME").Value
oRcordSet.MoveNext
i = i + 1
Loop
oWorkbook.Close True
oExcelApp.Quit
Set oSheet = Nothing
Set oWorkbook = Nothing
Set oExcelApp = Nothing
oConn.Close
Set oRcordSet = Nothing
Set oConn = Nothing
Этот пример переносит занные из sql-запроса "select G_ID, G_NAME, price, GR_FULL_NAME from TBL_GOODS, TBL_GROUPS where G_GR_ID = GR_ID" в пустой файл-шаблон Эксель "C:\TEMP\price1.xls" начиная с 6-й строки и затем спрашивает куда сохранить новый файл.
Если нужно еще вызвать макрос, то после передачи данных из запроса можно дописать
oExcelApp.Application.Run "MarcosName"
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
Прайс-лист в Excel с фотографиями через VBScript
Вот пример создания прайс-листа в который потом производится экспорт фотографий товаров (не забудьте настроить доступ к базе данных):
oConn.Close
Set oRcordSet = Nothing
Set oConn = Nothing
Set oStream = Nothing
По данному примеру можно дальше кастомизировать вид прайса - менять шрифты, цвет текста и фона, границы ячеек, высоту строк и ширину колонок и т.п. Вся использованная информация взята из документации по Excel, VBA, VBS. Так же по Excel и VBA существует большое количество специализированных форумов где можно найти примеры работы с листами, ячейками, регионами, фигурами и прочими элементами приложения Excel.