|
Проблема с выводом в Excel
|
|||
---|---|---|---|
#18+
есть выборка по определенному условию, и данные все время меняются (ПРимер: ввод периода даты). В 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'); ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2007, 13:02 |
|
Проблема с выводом в Excel
|
|||
---|---|---|---|
#18+
Наташа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 выводиться вот такая табличка... И в чем у Вас вопрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2007, 18:30 |
|
Проблема с выводом в Excel
|
|||
---|---|---|---|
#18+
Люди, подскажите в как решить одну проблемку!? Выгружаю данные из 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2014, 12:07 |
|
Проблема с выводом в Excel
|
|||
---|---|---|---|
#18+
Модератор: 1) Создайте свою тему, ваш вопрос не связан с этой 2) Приложите файл образец, на котором можно посмотреть результат и запустить ваш код 3) Посмотрите, как правильно оформлять код в сообщении - FAQ ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2014, 12:10 |
|
Проблема с выводом в Excel
|
|||
---|---|---|---|
#18+
Код: vbnet 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2014, 12:21 |
|
|
start [/forum/topic.php?fid=61&msg=34984784&tid=2174005]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 19ms |
total: | 138ms |
0 / 0 |