powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Проблема с выводом в Excel
6 сообщений из 6, страница 1 из 1
Проблема с выводом в Excel
    #34984784
НаташаXX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть выборка по определенному условию, и данные все время меняются (ПРимер: ввод периода даты). В Excel выводиться вот такая табличка...
Наименование объекта Срочность ошибки 23 24(даты) Итого
ats74_aMsgErr Несрочная 3 15 Сумма (3+15)
ats74_aMsgErr Полусрочная 3 16 Сумма (3+16)
ats74_aMsgErr Срочная 509 14
ats74_bMsgErr Срочная 4 181
скажите с чего начать?
вот сама процедура ввывода
declare
objExcelApp OLE2.OBJ_TYPE ;
objArgList OLE2.LIST_TYPE ;
ArgList OLE2.LIST_TYPE;
workbooks OLE2.OBJ_TYPE :=NULL;
workbook OLE2.OBJ_TYPE :=NULL;
worksheets OLE2.OBJ_TYPE :=NULL;
worksheet OLE2.OBJ_TYPE :=NULL;
cell OLE2.OBJ_TYPE :=NULL;
bold OLE2.OBJ_TYPE;
Italic OLE2.OBJ_TYPE;
font OLE2.OBJ_TYPE;
inter OLE2.OBJ_TYPE;
border OLE2.OBJ_TYPE;
idCursor EXEC_SQL.CURSTYPE;
idCursor1 EXEC_SQL.CURSTYPE;
idCursor2 EXEC_SQL.CURSTYPE;
idCursor3 EXEC_SQL.CURSTYPE;
idCursor4 EXEC_SQL.CURSTYPE;
vSQLStr VARCHAR2(500):='';
vSQLStr1 VARCHAR2(500):='';
vSQLStr2 VARCHAR2(500):='';
vSQLStr3 VARCHAR2(500):='';
vSQLStr4 VARCHAR2(500):='';
iIgnore PLS_INTEGER:=0;
iIgnore1 PLS_INTEGER:=0;
iIgnore2 PLS_INTEGER:=0;
iIgnore3 PLS_INTEGER:=0;
iIgnore4 PLS_INTEGER:=0;
iROWS PLS_INTEGER:=0;
iROWS1 PLS_INTEGER:=0;
iROWS2 PLS_INTEGER:=0;
iROWS3 PLS_INTEGER:=0;
nloc_sum_amnt number(20):=0;
N varchar2(20):='';
E varchar2(20):='';
kol number(20):=0;
l_DAT varchar(10):=to_char(SYSDATE,'DD');
l_DAT2 varchar(10):=to_char(SYSDATE,'MM');
lp_dat varchar(10):=to_char(SYSDATE,'DD');
lp_dat2 varchar(10):=to_char(SYSDATE,'MM');
nloc_VLS_E_D varchar2(20):='';
nloc_VLS_E_D1 varchar2(255):='';
nloc_VLS_E_D2 varchar2(20):='';
nloc_VLS_E_D3 varchar2(20):='';
nloc_VLS_E_D4 varchar2(20):='';
l_ID_CAT varchar2(20):='';
l_INC_CR varchar2(10):='';

l_VALIDAT_N date:=SYSDATE;
l_VALIDAT_K date:=SYSDATE;
i number(5):=0;
j number(5):=0;
nloc_sum_itog number(20):=0;
l_GOROD varchar2(255):='';

BEGIN
l_GOROD:='Екатеринбург';
l_INC_CR:=:Блок59.ATS4;
l_VALIDAT_N:=:Блок59.datastart4;
l_VALIDAT_K:=:Блок59.dataend4;
lp_dat:=l_VALIDAT_N;


i:=1;
j:=1;
--Инициализация
objExcelApp := OLE2.CREATE_OBJ('Excel.APPLICATION');

--Вскрытие Excel-a
ole2.set_property(objExcelApp, 'Visible', TRUE );

--Инициализация книги------------------------------
workbooks := OLE2.GET_OBJ_PROPERTY(objExcelApp, 'Workbooks');
workbook := OLE2.GET_OBJ_PROPERTY(workbooks, 'Add');

--Создать новый лист--------------------------------
worksheets := OLE2.GET_OBJ_PROPERTY(workbook, 'Worksheets');
worksheet := OLE2.GET_OBJ_PROPERTY(worksheets, 'Add');

ArgList:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ArgList, 1);
OLE2.ADD_ARG(ArgList, 1);
cell:=OLE2.get_OBJ_property(worksheet, 'cells', ArgList);
OLE2.Invoke(cell,'select');
OLE2.DESTROY_ARGLIST(ArgList);

--Переименовать лист----------------------------
OLE2.set_property(worksheet, 'Name', 'Отчет № 4');

j:=3;
--Выделить ячейку--------------------------------
OLE2.RELEASE_OBJ(cell);
ArgList:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ArgList, i);
OLE2.ADD_ARG(ArgList, j);
cell:=OLE2.get_OBJ_property(worksheet, 'cells', ArgList);
OLE2.Invoke(cell,'select');
OLE2.DESTROY_ARGLIST(ArgList);
--Заполнить ячейку--------------------------------
-- OLE2.set_property( cell, 'Value', ' Количество аварийных сообщений по каждой АСТ за месяц' );

i:=i+1;
j:=1;
--Выделить ячейку--------------------------------
OLE2.RELEASE_OBJ(cell);
ArgList:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ArgList, i);
OLE2.ADD_ARG(ArgList, j);
cell:=OLE2.get_OBJ_property(worksheet, 'cells', ArgList);
OLE2.Invoke(cell,'select');
OLE2.DESTROY_ARGLIST(ArgList);
--Заполнить ячейку--------------------------------
OLE2.set_property( cell, 'Value', 'Дата печати: '||to_char( l_VALIDAT_N, 'dd.mm.yyyy hh24:mi:ss'));

j:=j+2;
--Выделить ячейку--------------------------------
OLE2.RELEASE_OBJ(cell);
ArgList:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ArgList, i);
OLE2.ADD_ARG(ArgList, j);
cell:=OLE2.get_OBJ_property(worksheet, 'cells', ArgList);
OLE2.Invoke(cell,'select');
OLE2.DESTROY_ARGLIST(ArgList);
--Заполнить ячейку--------------------------------
OLE2.set_property( cell, 'Value', l_GOROD );

i:=i+1;
j:=j-1;

--Выделить ячейку--------------------------------
OLE2.RELEASE_OBJ(cell);
ArgList:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ArgList, i);
OLE2.ADD_ARG(ArgList, j);
cell:=OLE2.get_OBJ_property(worksheet, 'cells', ArgList);
OLE2.Invoke(cell,'select');
OLE2.DESTROY_ARGLIST(ArgList);

i:=i+1;
j:=1;

--Выделить ячейку--------------------------------
OLE2.RELEASE_OBJ(cell);
ArgList:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ArgList, i);
OLE2.ADD_ARG(ArgList, j);
cell:=OLE2.get_OBJ_property(worksheet, 'cells', ArgList);
OLE2.Invoke(cell,'select');
OLE2.DESTROY_ARGLIST(ArgList);

--Заполнить ячейку--------------------------------
OLE2.set_property( cell, 'Value', 'Количество аварийных сообщений по '||l_INC_CR ||' АСТ за период ' ||to_char(l_VALIDAT_N, 'dd.mm.yyyy hh24:mi:ss') || ' по ' || to_char(l_VALIDAT_K, 'dd.mm.yyyy hh24:mi:ss'));

i:=i+1;
j:=1;
--Выделить ячейки--------------------------------
OLE2.RELEASE_OBJ(cell);
ArgList:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ArgList, 'A'||3);
OLE2.ADD_ARG(ArgList, 'C'||i);
cell:=OLE2.get_OBJ_property(worksheet, 'range', ArgList);
OLE2.DESTROY_ARGLIST(ArgList);
OLE2.Invoke(cell,'select');

--Установить ширину столбца------------------------
OLE2.set_property(cell, 'ColumnWidth', 22);

--Установить жирный шрифт-----------------------
bold := OLE2.get_OBJ_property(cell, 'Font');
OLE2.set_property(bold, 'Bold', TRUE);
OLE2.RELEASE_OBJ(bold);
--Установить курсив-----------------------------
Italic := OLE2.get_OBJ_property(cell, 'Font');
OLE2.set_property(Italic, 'Italic', TRUE);
OLE2.RELEASE_OBJ(Italic);

--Установить размер шрифта-----------------------
font := OLE2.get_OBJ_property(cell, 'Font');
OLE2.set_property(font, 'Size', 14);
OLE2.RELEASE_OBJ(font);

--Установить цвет шрифта-----------------------
font := OLE2.get_OBJ_property(cell, 'Font');
OLE2.set_property(font, 'ColorIndex', 32);
OLE2.RELEASE_OBJ(font);

i:=i+1;
j:=1;
--Выделить ячейку--------------------------------
OLE2.RELEASE_OBJ(cell);
ArgList:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ArgList, i);
OLE2.ADD_ARG(ArgList, j);
cell:=OLE2.get_OBJ_property(worksheet, 'cells', ArgList);
OLE2.Invoke(cell,'select');
OLE2.DESTROY_ARGLIST(ArgList);
--Заполнить ячейку--------------------------------
OLE2.set_property( cell, 'Value', 'Наименование объекта' );
--Установить жирный шрифт-----------------------
bold := OLE2.get_OBJ_property(cell, 'Font');
OLE2.set_property(bold, 'Bold', TRUE);
OLE2.RELEASE_OBJ(bold);
border := OLE2.get_OBJ_property(cell, 'Borders');
OLE2.set_property(border, 'ColorIndex', 1);
OLE2.set_property(border, 'Bold', TRUE);
OLE2.RELEASE_OBJ(border);
j:=j+1;
--Выделить ячейку--------------------------------
OLE2.RELEASE_OBJ(cell);
ArgList:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ArgList, i);
OLE2.ADD_ARG(ArgList, j);
cell:=OLE2.get_OBJ_property(worksheet, 'cells', ArgList);
OLE2.Invoke(cell,'select');
OLE2.DESTROY_ARGLIST(ArgList);
--Заполнить ячейку--------------------------------
OLE2.set_property( cell, 'Value', 'Срочность ошибки' );
--Установить жирный шрифт-----------------------
bold := OLE2.get_OBJ_property(cell, 'Font');
OLE2.set_property(bold, 'Bold', TRUE);
OLE2.RELEASE_OBJ(bold);
border := OLE2.get_OBJ_property(cell, 'Borders');
OLE2.set_property(border, 'ColorIndex', 1);
OLE2.set_property(border, 'Bold', TRUE);
OLE2.RELEASE_OBJ(border);
j:=3;

begin

vSQLStr:='select t1.naim, err_num, count(t1.err_num) as kol1, to_char(t1.datat_start,''DD'') as D1
from av_signal74_norm t1
where t1.err_naim= :lp_INC_CR
and t1.datat_start >=:lp_VALIDAT_N
and t1.datat_end <=:lp_VALIDAT_K
group by t1.naim, t1.err_num, to_char(t1.datat_start,''DD'')order by t1.naim';

idCursor2:=EXEC_SQL.Open_Cursor;
vSQLStr1:='select distinct d1 from ('||vSQLStr||') order by d1';


EXEC_SQL.Parse(idCursor2,vSQLStr1,exec_sql.V7);

EXEC_SQL.Bind_Variable(idCursor2,':lp_VALIDAT_N', l_VALIDAT_N);
EXEC_SQL.Bind_Variable(idCursor2,':lp_VALIDAT_K', l_VALIDAT_K);
EXEC_SQL.Bind_Variable(idCursor2,':lp_INC_CR', l_INC_CR );

EXEC_SQL.Define_Column(idCursor2, 1, l_DAT, 3);

iIgnore2:=EXEC_SQL.Execute(idCursor2);

WHILE (EXEC_SQL.Fetch_Rows(idCursor2)>0) LOOP

EXEC_SQL.Column_Value(idCursor2, 1, l_DAT);

iRows:=iRows+1;


--Выделить ячейку--------------------------------
OLE2.RELEASE_OBJ(cell);
ArgList:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ArgList, i);
OLE2.ADD_ARG(ArgList, j);
cell:=OLE2.get_OBJ_property(worksheet, 'cells', ArgList);
OLE2.Invoke(cell,'select');
OLE2.DESTROY_ARGLIST(ArgList);
--Заполнить ячейку--------------------------------
OLE2.set_property( cell, 'Value', l_DAT);
OLE2.set_property(cell, 'HorizontalAlignment', 'xlLeft');
border := OLE2.get_OBJ_property(cell, 'Borders');
OLE2.set_property(border, 'ColorIndex', 1);
OLE2.set_property(border, 'Bold', TRUE);
OLE2.RELEASE_OBJ(border);
bold := OLE2.get_OBJ_property(cell, 'Font');
OLE2.set_property(bold, 'Bold', TRUE);
OLE2.RELEASE_OBJ(bold);

idCursor1:=EXEC_SQL.Open_Cursor;

-- j:=j+1;

vSQLStr2:='select naim, err_num, sum(decode(d1,:lp_dat,kol1,0)) as kol from ('||vSQLStr||') group by naim, err_num order by naim,err_num' ;

EXEC_SQL.Parse(idCursor1,vSQLStr2,exec_sql.V7);

EXEC_SQL.Bind_Variable(idCursor1,':lp_dat', l_DAT);
EXEC_SQL.Bind_Variable(idCursor1,':lp_VALIDAT_N', l_VALIDAT_N);
EXEC_SQL.Bind_Variable(idCursor1,':lp_VALIDAT_K', l_VALIDAT_K);
EXEC_SQL.Bind_Variable(idCursor1,':lp_INC_CR', l_INC_CR );

EXEC_SQL.Define_Column(idCursor1, 1, nloc_VLS_E_D, 15);
EXEC_SQL.Define_Column(idCursor1, 2, nloc_VLS_E_D2,15);
EXEC_SQL.Define_Column(idCursor1, 3, nloc_VLS_E_D3,7);


iIgnore1:=EXEC_SQL.Execute(idCursor1);

WHILE (EXEC_SQL.Fetch_Rows(idCursor1)>0) LOOP

EXEC_SQL.Column_Value(idCursor1, 1, nloc_VLS_E_D);
EXEC_SQL.Column_Value(idCursor1, 2, nloc_VLS_E_D2);
EXEC_SQL.Column_Value(idCursor1, 3, nloc_VLS_E_D3);


iRows1:=iRows1+1;
i:=i+1;
--Выделить ячейку--------------------------------
OLE2.RELEASE_OBJ(cell);
ArgList:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ArgList, i);
OLE2.ADD_ARG(ArgList, 1);
cell:=OLE2.get_OBJ_property(worksheet, 'cells', ArgList);
OLE2.Invoke(cell,'select');
OLE2.DESTROY_ARGLIST(ArgList);
--Заполнить ячейку--------------------------------
OLE2.set_property( cell, 'Value', nloc_VLS_E_D);

border := OLE2.get_OBJ_property(cell, 'Borders');
OLE2.set_property(border, 'ColorIndex', 1);
OLE2.RELEASE_OBJ(border);
--Выделить ячейку--------------------------------
OLE2.RELEASE_OBJ(cell);
ArgList:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ArgList, i);
OLE2.ADD_ARG(ArgList, 2);
cell:=OLE2.get_OBJ_property(worksheet, 'cells', ArgList);
OLE2.Invoke(cell,'select');
OLE2.DESTROY_ARGLIST(ArgList);

--Заполнить ячейку--------------------------------
OLE2.set_property( cell, 'Value', nloc_VLS_E_D2 );

border := OLE2.get_OBJ_property(cell, 'Borders');
OLE2.set_property(border, 'ColorIndex', 1);
OLE2.RELEASE_OBJ(border);
--Выделить ячейку--------------------------------
OLE2.RELEASE_OBJ(cell);
ArgList:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ArgList, i);
OLE2.ADD_ARG(ArgList, j);
cell:=OLE2.get_OBJ_property(worksheet, 'cells', ArgList);
OLE2.Invoke(cell,'select');
OLE2.DESTROY_ARGLIST(ArgList);

--Заполнить ячейку--------------------------------
OLE2.set_property( cell, 'Value', nloc_VLS_E_D3 );

border := OLE2.get_OBJ_property(cell, 'Borders');
OLE2.set_property(border, 'ColorIndex', 1);
OLE2.RELEASE_OBJ(border);

end loop;
EXEC_SQL.Close_Cursor (idCursor1);
j:=j+1;
i:=6;
END LOOP;
EXEC_SQL.Close_Cursor (idCursor2);

OLE2.RELEASE_OBJ(cell);
ArgList:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ArgList, 6);
OLE2.ADD_ARG(ArgList, j);
cell:=OLE2.get_OBJ_property(worksheet, 'cells', ArgList);
OLE2.Invoke(cell,'select');
OLE2.DESTROY_ARGLIST(ArgList);
--Заполнить ячейку--------------------------------
OLE2.set_property( cell, 'Value', 'Всего' );
--Установить жирный шрифт-----------------------
bold:= OLE2.get_OBJ_property(cell, 'Font');
OLE2.set_property(bold, 'Bold', TRUE);
OLE2.RELEASE_OBJ(bold);
border := OLE2.get_OBJ_property(cell, 'Borders');
OLE2.set_property(border, 'ColorIndex', 1);
OLE2.set_property(border, 'Bold', TRUE);
OLE2.RELEASE_OBJ(border);
OLE2.set_property(cell, 'HorizontalAlignment', 'xlLeft');
...
Рейтинг: 0 / 0
Проблема с выводом в Excel
    #34986115
кладовщик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НаташаXXесть выборка по определенному условию, и данные все время меняются (ПРимер: ввод периода даты). В Excel выводиться вот такая табличка...
Наименование объекта Срочность ошибки 23 24(даты) Итого
ats74_aMsgErr Несрочная 3 15 Сумма (3+15)
ats74_aMsgErr Полусрочная 3 16 Сумма (3+16)
ats74_aMsgErr Срочная 509 14
ats74_bMsgErr Срочная 4 181
скажите с чего начать?
вот сама процедура ввывода
declare
еще какого-то кода многие строки, читать кот-е мало кому кроме автора интересны (наверное)
Начать нужно с корректной постановки вопроса. В чем проблема вообще?
Попробую поугадывать.
Есть какая-то таблица-запрос в БД.
НаташаXX
есть выборка по определенному условию
И есть идея исп-ть Эксель как клиент.
НаташаXX
В Excel выводиться вот такая табличка...
И в чем у Вас вопрос?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Проблема с выводом в Excel
    #38651861
FrankBones
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Люди, подскажите в как решить одну проблемку!?

Выгружаю данные из Access в Эксель, и для каждой строчки в Эксель применяю свою процедуру border которая рисует границы ячеек.
Так вот все работает хорошо, пока не доходит до конца строки, где почему-то не дорисовывается(вернее не отображается нижняя линия). И так на каждой странице. Хотя в формате ячейки граница отображается. Если проставить границы вручную, всё ОК!
Что за трабл?

Private Sub border(rng As Range)
rng.Borders(xlDiagonalDown).LineStyle = xlNone
rng.Borders(xlDiagonalUp).LineStyle = xlNone
With rng.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With rng.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With rng.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With rng.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With rng.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
...
Рейтинг: 0 / 0
Проблема с выводом в Excel
    #38651870
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор: 1) Создайте свою тему, ваш вопрос не связан с этой
2) Приложите файл образец, на котором можно посмотреть результат и запустить ваш код
3) Посмотрите, как правильно оформлять код в сообщении - FAQ
...
Рейтинг: 0 / 0
Проблема с выводом в Excel
    #38651885
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
Private Sub border(rng As Range)
rng.Borders.color = vbblack
End Sub
...
Рейтинг: 0 / 0
Проблема с выводом в Excel
    #38653368
FrankBones
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, заработало!
И делов-то :)

The_Prist
Код: vbnet
1.
2.
3.
Private Sub border(rng As Range)
rng.Borders.color = vbblack
End Sub
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Проблема с выводом в Excel
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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