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

Тема в разделе "Lotus - Программирование", создана пользователем oleg7, 26 янв 2010.

Наш партнер Genesis Hackspace
  1. oleg7

    oleg7 Гость

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

    Klido Гость

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

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Очень просто,

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

    начинать с ActiveSheet.Shapes.AddChart
     
  4. iki

    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]
     
  5. oleg7

    oleg7 Гость

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

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.120
    Симпатии:
    301
    здесь выкладывали код для диаграмм (винсент)

    и я упоминал тулзы...
    использовать jasperreport
    получаем XML/CSV/БД, визуально прогаем репорт
    в состав нотусей включаем jar от репортинга
    натравливаем код из "двух" операторов на XML - получем диаграмму - хоть в ПДФ, хоть в хехэль...
    http://jasperforge.org/plugins/project/pro...ectname=ireport
    забыть МСО - как страшный сон
     
  7. iki

    iki Гость

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

Поделиться этой страницей