powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Как экспортировать данные в Excel в конкретный лист
9 сообщений из 9, страница 1 из 1
Как экспортировать данные в Excel в конкретный лист
    #36984052
MiroMAX_99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я новичок, мне нужна ваша помощь...
Вот кусок
is_file_name - объявлено имя файла Отчет 1.xls
// Запускаем Excel
lole_oleobject = CREATE OLEObject
....
// Запускаем файл is_file_name = Отчет 1.xls
lole_oleobject.Application.Workbooks.Open (is_file_name)
lole_oleobject.Application.Visible = True
lole_oleobject.Application.WindowState = 2 // окно сворачивается!
DESTROY lole_oleobject

Таким образом открываем файл, точнее книга.
Мне надо формировать 4 отчета в одной книге, но в разных листах.
Знаю, что Лист называется через Worksheets
но что дальше делать, как обратиться к листу не знаю.
Может кто часто с этим сталкивается и знает. Помогите новичку!!!
...
Рейтинг: 0 / 0
Как экспортировать данные в Excel в конкретный лист
    #36984866
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MiroMAX_99Я новичок, мне нужна ваша помощь...
Вот кусок
is_file_name - объявлено имя файла Отчет 1.xls
// Запускаем Excel
lole_oleobject = CREATE OLEObject
....
// Запускаем файл is_file_name = Отчет 1.xls
lole_oleobject.Application.Workbooks.Open (is_file_name)
lole_oleobject.Application.Visible = True
lole_oleobject.Application.WindowState = 2 // окно сворачивается!
DESTROY lole_oleobject

Таким образом открываем файл, точнее книга.
Мне надо формировать 4 отчета в одной книге, но в разных листах.
Знаю, что Лист называется через Worksheets
но что дальше делать, как обратиться к листу не знаю.
Может кто часто с этим сталкивается и знает. Помогите новичку!!!

Код: plaintext
1.
2.
3.
4.
5.
lole_oleobject.ActiveWorkBook.WorkSheets.Count // кол-во листов
lole_oleobject.ActiveWorkBook.WorkSheets.Add() // добавить лист в конец
lole_oleobject.ActiveWorkBook.WorkSheets(n).Name = "Name" // задать имя листа n
lole_oleobject.ActiveWorkBook.WorkSheets(n).Cells( 1 ,  1 ).Value = "value" // установить значение в ячейку A1 листа n
lole_oleobject.ActiveWorkbook.Save() // сохранить книгу


Ну и DESTROY lole_oleobject естественно в самом конце должен быть, а не сразу после открытия книги, а перед ним еще сохранить книгу нужно :)
...
Рейтинг: 0 / 0
Как экспортировать данные в Excel в конкретный лист
    #36985091
MiroMAX_99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СПАСИБО за помощь!!!
Буду разбираться.
...
Рейтинг: 0 / 0
Как экспортировать данные в Excel в конкретный лист
    #36985158
MiroMAX_99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anatoly Moskovsky
Код: plaintext
1.
2.
3.
4.
5.
6.
lole_oleobject.ActiveWorkBook.WorkSheets.Count // кол-во листов
lole_oleobject.ActiveWorkBook.WorkSheets.Add() // добавить лист в конец
lole_oleobject.ActiveWorkBook.WorkSheets(n).Name = "Name" // задать имя листа n
lole_oleobject.ActiveWorkBook.WorkSheets(n).Cells( 1 ,  1 ).Value = "value" // установить значение в ячейку A1 листа n
lole_oleobject.ActiveWorkbook.Save() // сохранить книгу

Ну и DESTROY lole_oleobject естественно в самом конце должен быть, а не сразу после открытия книги, а перед ним еще сохранить книгу нужно :)



Еще раз спасибо. Но у меня есть уже книга. Она создана (Отчет 1.xls), в ней 4 листа "октябрь", "ноябрь", "декабрь", "годовой".
Мне надо открыть конкретный лист в зависимости от условий (например "декабрь"), а не создавать его, и экспортировать данные в него.
А за функции спасибо. Вот только лист создается в начале книги.
...
Рейтинг: 0 / 0
Как экспортировать данные в Excel в конкретный лист
    #36985523
+/-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
+/-
Гость
проще всего записать макрос в екселе , а потом перенести скрипт (предварительно обработав напильником) в билдер
...
Рейтинг: 0 / 0
Как экспортировать данные в Excel в конкретный лист
    #36987119
maxATC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Integer li_result
OLEObject oleEx
oleEx= CREATE OLEObject
li_result = oleEx.ConnectToNewObject('excel.application')

if result =  0  then
	oleEx.Workbooks.Open ('C:\Шаблон.xls')	
           oleEx.Sheets("Лист1").Select
           oleEx.Range("A1").Select
           oleEx.ActiveCell.FormulaR1C1 =  'Это первый лист'
           oleEx.Sheets("Лист1").Select
           oleEx.Range("A1").Select
           oleEx.ActiveCell.FormulaR1C1 =  'Это второй лист''
           oleEx.ActiveWorkbook.SaveAs('c:\Выхлоп.xls')
	oleEx.application.Quit
           oleEx.DisconnectObject()
else
	Messagebox('Ошибка','Не могу соедениться с сервером OLE.',stopsign!)
end if

DESTROY oleEx

Как правило, я делаю в папке программы шаблоны листов и их заполняю, а сохраняю под другим именем.
...
Рейтинг: 0 / 0
Как экспортировать данные в Excel в конкретный лист
    #36987162
maxATC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В скрипте ошибочка в другой строчке где
Код: plaintext
oleEx.Sheets("Лист1").Select
необходимо конечно писать
Код: plaintext
oleEx.Sheets("Лист2").Select
или Ваше название листов, обработка идет в фоновом режиме а после сохранения файла выполнить
Код: plaintext
if Run('полный путь к Excel.exe' + ' '+'c:\Выхлоп.xls') <  0  then messagebox('Ошибка','Не могу запустить Excel!')
...
Рейтинг: 0 / 0
Как экспортировать данные в Excel в конкретный лист
    #36989439
+/-проще всего записать макрос в екселе , а потом перенести скрипт (предварительно обработав напильником) в билдер

НАМНОГО проще писать макрос в Excel а из билдера просто выгрузить нужные данные во временный файл и вызвать этот макрос.

Иначе предстоит идиотская "работа напильником" по переводу и перекомпиляции при любом
изменении
...
Рейтинг: 0 / 0
Как экспортировать данные в Excel в конкретный лист
    #36989499
В таком духе

// Создание datastore для чтения данных
uds_b ds
ds=create uds_b
ds.dataobject='dw_'+strtran(upper(template),'.XLS','_XLS')
ds.Settransobject(sqlca)
ds.anyread(olearrarg)

// Сохраняем в файл
string tempfile
tempfile=gs_curdir+"\tmp\"+string(Now(),'ddmmyy')+string(Now(),'hhss')+'.xls'
ds.saveas(tempfile,Excel5!,false) // данные
long rowcount,colcount
rowcount=ds.rowcount()
if rowcount=0 then
Messagebox('Внимание!','Документ не формируется - нет данных!')
Goto EndProg
end if
colcount=min(256,long(ds.object.datawindow.column.count))
destroy ds

oldpointer=SetPointer(HourGlass!)

OLEObject o1
int result
o1 = CREATE OLEObject
result = o1.ConnectToNewObject("excel.application")

if result<0 then
Messagebox('Внимание!','Ошибка соединения с Excel',Stopsign!)
Goto EndProg
end if
o1.workbooks.open(file)
o1.Application.Run("import",tempfile,rowcount,colcount)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Как экспортировать данные в Excel в конкретный лист
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]