• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Создать диаграмму в Excel

  • Автор темы oleg7
  • Дата начала
O

oleg7

Помогите, может есть у кого-то пример... Надо сделать печать документа и при этом на втором листе Excel выводить диаграмму.
Просто даже не представляю как эту диаграмму делать
поиском по сайту нашел темы, но не понял все же как делать диаграммы с данными из документа Лотус
 
K

Klido

данные надо передать в эксель и там уже делать диаграмму средствами экселя...
 
M

morpheus

Очень просто,

1. открыть справку по VBА для Экселя
2. просто записать макрос , выполнить все нужные действия и просмотреть текст макроса всё в томже VBА

начинать с ActiveSheet.Shapes.AddChart
 
I

iki

Вот делал совсем недавно. Может быть будет полезно.

В клиенте 7.0.2 столкнулся с проблеммой что Лотус н епонимает Exel'евские константы.
Заменял их на значения типо этого chart.ChartType = 57 'xlBarClustered

А вообще делал так как осветует морфеус.
Значения констант моно через ВБ дебагер смотреть.

[codebox]Print "Инициализация приложения"

Dim xlApp As Variant
Dim xlWB As Variant
Dim xlSheet As Variant

Set xlApp = CreateObject("Excel.Application")
Call xlApp.Workbooks.Add
xlApp.Visible = False
Set xlWB = xlApp.Workbooks(1)

'удаление лишних листов
Set xlSheet = xlWB.Worksheets(3)
Call xlSheet.delete
Set xlSheet = xlWB.Worksheets(2)
Call xlSheet.delete

Set xlSheet = xlWB.Worksheets(1)
xlSheet.Name ="Отчет"

xlsheet.Columns("A:A").ColumnWidth = 3
xlsheet.Columns("B:B").ColumnWidth = 13

Redim Preserve divarray(0)

'создание строчки с заголовками поздразделений и суммы по каждому из них
'поздразделения беруться из списка вида "Час!Подразделение=кол-во посещений"
Call KipStatistic_VisitorsFillTable (x_start,y_start,docList,diagrtype,xlSheet, divarray)

'задаем размер таблицы в зависимости от типа диаграммы
Dim x_tab As Integer
Dim y_tab As Integer
Select Case diagrtype
Case 3
x_tab=x_start+Ubound(divarray)+3
y_tab=y_start+27
Case 2
x_tab=x_start+Ubound(divarray)+3
y_tab=y_start+2
Case 1
x_tab=x_start+2
y_tab=y_start+27
Case 0
x_tab=x_start+2
y_tab=y_start+2
End Select

'заполнение первой колонки (времени) и создание построчной суммы
Call KipStatistic_VisitorsCreateSum (x_start,y_start,x_tab,y_tab,diagrtype,xlSheet)

'выделение жирным заголовков
'xlSheet.Range("A2:A27").font.Bold = True
xlSheet.Range( xlSheet.Cells(y_start+1,x_start+1),xlSheet.Cells(y_start+y_tab,x_start) ).font.Bold = True
xlSheet.Range( xlSheet.Cells(y_start+1,x_start+1),xlSheet.Cells(y_start+1,x_tab) ).font.Bold = True

'рисуем таблицу
Call KipStatistic_VisitorsDrawMargins (x_start,y_start,x_tab ,y_tab ,xlSheet ,xlApp)

'построение диаграммы
Print "Построение диаграммы"
Dim chart As Variant
If y_tab > 3 Then y_tab=y_tab-2

Call xlSheet.Range( xlSheet.Cells(y_start+1,x_start+1),xlSheet.Cells(y_tab,x_tab) ).Select

Set chart = xlWB.Charts.Add
chart.name="Диаграмма"
'тип диаграммы - линейчатая
chart.ChartType = 57 'xlBarClustered
'ряды по столбцам
Chart.PlotBy = 2 'xlColumns

'удаление пустого ряда
If diagrtype > 1 Then chart.SeriesCollection(Ubound(divarray)+1).Delete

'создание заголовка диаграммы ( в каментах указаны значения соответствующий кодам в скобках)
chart.HasTitle = True
Dim titlestr As String
titlestr="Количество посещений портала с " & dt1 & " по " & dt2
Select Case diagrtype
Case 3
titlestr=titlestr & " с разбивкой по предприятиям и часам"
Case 2
titlestr=titlestr & " с разбивкой по предприятиям"
Case 1
titlestr=titlestr & " с разбивкой по часам"
End Select
chart.ChartTitle.Characters.Text = titlestr
chart.HasLegend = True
Chart.Legend.Position = -4160 'xlLegendPositionTop
If diagrtype=2 Then chart.HasAxis(1, 1) = False
chart.HasAxis(2, 1) = True '(xlValue, xlPrimary)
chart.Axes(2, 1).HasTitle = True '(xlValue, xlPrimary)
chart.Axes(2, 1).AxisTitle.Characters.Text = "Кол-во человек" '(xlValue, xlPrimary)
chart.ProtectSelection = True
Call xlSheet.Protect(,True,True)
Call xlWB.Sheets("Отчет").Select
Call xlSheet.Range( xlSheet.Cells(1,1),xlSheet.Cells(1,1) ).Select


Print ""
xlApp.Visible = True
Goto endH
errHandler:
Error Err, "(" & LibName & ") " & FuncName & ", стр." & Erl & Chr (10) & Error$
endH:[/codebox]
 
O

oleg7

iki
Спасибо Вам большое!
но вот не могу понять, что означает
Call KipStatistic_VisitorsFillTable (x_start,y_start,docList,diagrtype,xlSheet, divarray)
KipStatistic_VisitorsFillTable - это что?
может вечер уже сказывается
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
215
здесь выкладывали код для диаграмм (винсент)

и я упоминал тулзы...
использовать jasperreport
получаем XML/CSV/БД, визуально прогаем репорт
в состав нотусей включаем jar от репортинга
натравливаем код из "двух" операторов на XML - получем диаграмму - хоть в ПДФ, хоть в хехэль...

забыть МСО - как страшный сон
 
I

iki

но вот не могу понять, что означает
Call KipStatistic_VisitorsFillTable (x_start,y_start,docList,diagrtype,xlSheet, divarray)
KipStatistic_VisitorsFillTable - это что?

Это моя самописная функция, которая заполняет нарисованную таблицу. Там еще KipStatistic_VisitorsDrawMargins.
Просто не стал удалять их и кинул как есть.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!