Robert Goldman Ответов: 1

Vb.net добавление второй линии на диаграмму


Я пытаюсь построить график двух линий из этих данных
Here is my excel spreadsheet ----
sheet 1
time	value1
0	6
1	6
2	7
3	6
4	5
5	6
6	7
7	6
8	5
9	4
10	3
sheet 2------------------------------
time	value2
0	5
1	5
2	6
3	5
4	4
5	5
6	6
7	5
8	4
9	3
10	2


Что я уже пробовал:

Here is the code that generates one graph line from sheet 1

Imports Excel = Microsoft.Office.Interop.Excel
Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim xlApp As New Excel.Application
        Dim xlWorkBook As Excel.Workbook
        Dim xlWorkSheet As Excel.Worksheet

        xlApp.Visible = True
        xlWorkBook = xlApp.Workbooks.Open("L:\x_GGNS_addons\WorkingJunk\book1.xlsx")
        xlWorkSheet = CType(xlWorkBook.Sheets("sheet1"), Excel.Worksheet)

        Dim xlcharts = xlWorkSheet.ChartObjects
        Dim myChart As Excel.ChartObject = xlcharts.Add(180, 80, 300, 250)
        Dim chartPage As Excel.Chart = myChart.Chart
        chartPage.Activate()


        With chartPage
            Dim range1 As Excel.Range
            Dim range2 As Excel.Range
            Dim chartRange As Excel.Range
            'range1 = xlWorkSheet.Range("$A$1", "$A$10")
            range1 = xlWorkSheet.Range("sheet1!$A$1:$A$10")
            'range2 = xlWorkSheet.Range("$B$1", "$B$10")
            range2 = xlWorkSheet.Range("sheet1!$B$1:$B$10")
            chartRange = xlApp.Union(range1, range2)
            .SetSourceData(chartRange, Excel.XlRowCol.xlColumns)
            .ApplyCustomType(Excel.XlChartType.xlXYScatterLines)
            .Location(Excel.XlChartLocation.xlLocationAsNewSheet, "chart1")
          
        End With
    End Sub
End Class

Приведенный выше код генерирует график, как и ожидалось.
Вот макрос, который добавляет вторую строку
Sub Macro1()
'
' Macro1 Macro
'

'
    ActiveChart.ChartArea.Select
    ActiveChart.PlotArea.Select
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.FullSeriesCollection(2).XValues = "=Sheet2!$A$2:$A$12"
    ActiveChart.FullSeriesCollection(2).Values = "=Sheet2!$B$2:$B$12"
    ActiveChart.FullSeriesCollection(2).Name = "=Sheet2!$A$2:$A$12"
    ActiveChart.FullSeriesCollection(2).Name = "=Sheet2!$B$1"
End Sub

Ни за что на свете я не могу понять, как добавить вторую строку в Visual basic!
Помогите!
Роберт

Maciej Los

Вы хотите создать объект диаграммы внутри листа или вы хотите создать лист-диаграмму?

Robert Goldman

Я создал диаграмму под названием "chart1" с линией из листа 1. Я хочу добавить вторую строку в "диаграмму 1" из данных с листа 2.

1 Ответов

Рейтинг:
1

Maciej Los

Как я уже упоминал в своем комментарии к этому вопросу, в Excel существует 2 типа диаграмм: встроенная диаграмма и лист диаграммы. Видеть: Шаблоны панели мониторинга Excel что такое лист диаграммы Excel по сравнению со встроенной диаграммой? - Панель Шаблоны Excel[^]

В зависимости от этого способ добавления источника линий/кривых диаграммы может отличаться.
Видеть: Создание диаграмм в Microsoft Office Excel 2003 с использованием кода Visual Basic для приложений[^]

Удачи вам!

[РЕДАКТИРОВАТЬ]

Попробовать это:

 Dim xlApp As Excel.Application, xlWbk As Excel.Workbook, xlChart As Excel.Chart
 Dim sFileName As String = "FullPathAndFileName.xlsx" '

 Try
     xlApp = New Excel.Application
     ''uncomment below line if workbook is close
     xlWbk = xlApp.Workbooks.Open(sFileName)
     'Create a new chart.
     xlChart = xlWbk.Charts.Add()
     With xlChart
         .Name = "MyChart_" & xlWbk.Charts.Count
         .ChartType = 4 'xlLine
         .HasTitle = True
         .ChartTitle.Text = "Time And Value"
         .SeriesCollection(1).Name = "=Sheet1!$B$1"
         .SeriesCollection(1).Values = "=Sheet1!$B$2:$B$12"
         .SeriesCollection(2).Name = "=Sheet2!$B$1"
         .SeriesCollection(2).Values = "=Sheet2!$B$2:$B$12"
         .Axes(1, 1).HasTitle = True
         .Axes(1, 1).AxisTitle.Characters.Text = "Time"
         .Axes(2, 1).HasTitle = True
         .Axes(2, 1).AxisTitle.Characters.Text = "Value"

     End With
     xlApp.Visible = True

 Catch ex As Exception
     Console.WriteLine("{0}", ex.Message)

 Finally
     xlChart = Nothing
     xlWbk = Nothing
     xlApp = Nothing
End Try

Выше код рисует диаграмму с 2 линиями ;)


Robert Goldman

Это лист-схема. Я могу добавить вторую строку с помощью макроса, но не могу сделать это с помощью visual basic. Похоже, ссылка, которую вы мне дали, была для VBA. Я что-то упустил?
Я не могу преобразовать код макроса VBA в код Visual basic.

Robert Goldman

Спасибо за вашу помощь!

Maciej Los

Проверьте обновленный ответ (после раздела [EDIT]).

Robert Goldman

когда код попадет в цель ---
.SeriesCollection(2).Имя = "=Лист2!$B$1"

Он получает исключение -- параметр недопустим
Есть идеи?
Спасибо за вашу помощь!
Роберт

Maciej Los

Я протестировал вышеописанный код, и он отлично работает. Похоже, Excel не в состоянии создать вторую строку. Попробуйте использовать Помощьюseriescollection.Способ NewSeries как раз перед строкой, которая генерирует ошибку.