Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 30.11.2017
Сообщений: 5
1

Создание графика Excel

30.11.2017, 13:06. Показов 3963. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Прошу помощи в написании кода для создания графика в EXCEL
задача така
1. создание объекта EXCEL ( что не проблема и сделано)
2 передача рассчитаных данных из формы в excel (что тоже не сложно и сделано)
3. форматирование ячеек в excel (что тоже понятно)
и дальше по данным надо построить автоматичеки график в excel вот код
но он выдает ошибку
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim exctransf As Object
        exctransf = CreateObject("excel.application") 
        exctransf.visible = True 
        exctransf.workbooks.add 
        exctransf.range("b1") = "name" 
        exctransf.range("c1") = "distance"
        exctransf.range("d1") = "point"
        exctransf.range("e1") = "pressure"
        exctransf.range("f1") = "mass"
        exctransf.range("b1:f1").HorizontalAlignment = -4108 
        exctransf.range("b1:f1").VerticalAlignment = -4108 
        exctransf.range("b1:f1").WrapText = True 
        exctransf.range("b1:f1").Orientation = 0 
        exctransf.range("b1:f1").AddIndent = False 
        exctransf.range("b1:f1").IndentLevel = 0 
        exctransf.range("b1:f1").ShrinkToFit = False 
        exctransf.range("b1:f1").ReadingOrder = -5002 
        exctransf.range("b1:f1").MergeCells = False 
        exctransf.Columns("b:b").ColumnWidth = 10 
        exctransf.Columns("c:d").ColumnWidth = 12 
        exctransf.Columns("e:f").ColumnWidth = 16  
 
        For i = 1 To 10
            exctransf.cells(1 + i, 2).value = i 
            exctransf.cells(1 + i, 3).value = i ^ 2 + 12
        Next i
ВОТ С ЭТОГО МЕСТА НАЧИНАЮТЬСЯ ПРОБЛЕМЫ
график создаеться но не того типа и постоянно останавливаеться на "ChartType = 75"

VB.NET
1
2
3
4
5
6
7
8
   With exctransf.Application.ActiveSheet
            .Shapes.AddChart
           .ChartType = 75
            .SeriesCollection.NewSeries
            .SeriesCollection(1).XValues = "=Sheet1!$A$1:$A$12"
            .SeriesCollection(1).Values = "=Sheet1!$B$1:$B$12"
            .Location.Where = 1
        End With
может есть у кого то мысли что я делаю не так
Спасибо

Добавлено через 2 часа 15 минут
с типом графика решил проблему

.Shapes.AddChart(75)

а вот с диапазоном , размещением и форматирование нет пока
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.11.2017, 13:06
Ответы с готовыми решениями:

Создание графика в Excel из C#
Решил построить график в файле Excel при совершении экспорта из C# на просторах интернета нашел...

создание цветного графика в excel
Здравствуйте, подскажите как сделать что бы в диаграмме(график) всё что ниже определённого числа...

Создание графика функции в excel
Как построить график данной функции Каким образом заполнять ячейки?

Создание графика в Excel через форму
Здравствуйте! У меня задача такая - нужно сделать форму в документе Excel. При помощи формы Excel...

6
4407 / 3531 / 843
Регистрация: 02.02.2013
Сообщений: 3,417
Записей в блоге: 2
30.11.2017, 21:08 2
Пример
Кликните здесь для просмотра всего текста
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
Imports System.Runtime.InteropServices
Public Class Form1
    Private _xlApp As EX.Application
    Private _xlBook As EX.Workbook
    Private _xlSheet As EX.Worksheet
    Private xRange As EX.Range
    Private data1(), data2() As Integer
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        'формируем данные для графика
        data1 = {-1, 0, 2, 5, -9, 12, 26, 21}
        data2 = {-10, -2, 1, 14, 5, 8, 22, 14}
        'открываем новую книгу в Excel
        _xlApp = New EX.Application
        _xlApp.SheetsInNewWorkbook = 1
        _xlBook = _xlApp.Workbooks.Add()
        _xlSheet = _xlBook.ActiveSheet
        _xlApp.DisplayAlerts = False
        _xlApp.Visible = True
    End Sub
    Private Sub Data_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        'добавляем данные {Y1,Y2} на лист
        Dim n As Integer = data1.Length + 2 - 1
        _xlSheet.Range("A1").Value = "Y1"
        xRange = _xlSheet.Range("A2", "A" & n.ToString)
        xRange.Value = _xlApp.WorksheetFunction.Transpose(data1)
        _xlSheet.Range("B1").Value = "Y2"
        xRange = _xlSheet.Range("B2", "B" & n.ToString)
        xRange.Value = _xlApp.WorksheetFunction.Transpose(data2)
        xRange = _xlSheet.Range("A2", "B" & n.ToString)
    End Sub
    Private Sub Graph_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        'рисуем график
        Dim ch As EX.Chart = _xlApp.Charts.Add()
        ch.ChartType = EX.XlChartType.xlLine
        ch.SetSourceData(xRange, EX.XlRowCol.xlColumns)
        ch.Location(Microsoft.Office.Interop.Excel.XlChartLocation.xlLocationAsObject, _xlSheet.Name)
        ch = _xlApp.ActiveChart
        Dim sr1 As EX.Series = ch.SeriesCollection(1)
        Dim sr2 As EX.Series = ch.SeriesCollection(2)
        sr1.Border.Color = Color.Red
        sr1.Border.Weight = EX.XlBorderWeight.xlThick
        sr2.Border.Color = Color.Green
        sr2.Border.Weight = EX.XlBorderWeight.xlMedium
    End Sub
    Private Sub Form1_FormClosing(sender As System.Object, e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
        Marshal.ReleaseComObject(_xlSheet)
        _xlBook.Close(False)
        _xlApp.Workbooks.Close()
        Marshal.ReleaseComObject(_xlBook)
        _xlApp.Quit()
        Marshal.ReleaseComObject(_xlApp)
        _xlApp = Nothing
    End Sub
End Class

PS. Это простой пример, а вообще, как мне кажется, здесь можно бесконечно все настраивать и подстраивать.
Миниатюры
Создание графика Excel  
1
4407 / 3531 / 843
Регистрация: 02.02.2013
Сообщений: 3,417
Записей в блоге: 2
30.11.2017, 22:05 3
Добавьте (растерял при копировании)
VB.NET
1
Imports EX = Microsoft.Office.Interop.Excel
1
0 / 0 / 0
Регистрация: 30.11.2017
Сообщений: 5
01.12.2017, 13:25  [ТС] 4
Спасибо сижу пробую
еще правда пришлось разобраться как в Reference Manager добавить ссылку на библиотеку
добавил

Добавлено через 1 час 13 минут
не ясно вот этой структурой
можно как для чайника объяснить предназначении
ясно что очищает память, ресурс после выполнения
но если закрыть пограмму -EXCEL вопит об ошибке, если сохранить результат и закрыть программу EXCEL опять вопит об ошибке.
а так все работает спасибо
и еще если можна ссылку на ресурс где почитать как форматировать сделанный график (типа линий сетки добавлять убавлять , оси настраивать, шрифты осей и т.д. )
еще раз спасибо


Цитата Сообщение от ovva Посмотреть сообщение
Private Sub Form1_FormClosing(sender As System.Object, e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
* * * * Marshal.ReleaseComObject(_xlSheet)
* * * * _xlBook.Close(False)
* * * * _xlApp.Workbooks.Close()
* * * * Marshal.ReleaseComObject(_xlBook)
* * * * _xlApp.Quit()
* * * * Marshal.ReleaseComObject(_xlApp)
* * * * _xlApp = Nothing
* * End Sub
Добавлено через 1 час 52 минуты
и не могу понять почему не получаеться
такая строчка

ch.SetElement(Microsoft.Office.Interop.Excel.Gridlines.)
тут не хватает идентификатора ????
0
4407 / 3531 / 843
Регистрация: 02.02.2013
Сообщений: 3,417
Записей в блоге: 2
01.12.2017, 13:45 5
Цитата Сообщение от susak Посмотреть сообщение
не ясно вот этой структурой
Процедура FormClosing расчитана на то, что Excel закрывается автоматически при закрытии приложения (здесь же можно вставить и сохранение книги при необходимости). Если пользователь самостоятельно закрывает Excel, то экземпляр Application продолжает висеть в памяти (в этом можно убедиться через "Диспетчер задач"). Попробуйте следующий вариант FormClosing (если вы закрыли Excel до выхода из программы).
VB.NET
1
2
3
4
5
6
7
8
9
10
11
Try
    Marshal.ReleaseComObject(_xlSheet)
    _xlBook.Close(False)
    _xlApp.Workbooks.Close()
    Marshal.ReleaseComObject(_xlBook)
    _xlApp.Quit()
Catch ex As Exception
Finally
    Marshal.ReleaseComObject(_xlApp)
    _xlApp = Nothing
End Try
Цитата Сообщение от susak Посмотреть сообщение
если можна ссылку на ресурс
Ссылки на ресурсы ищите через поиск, у меня нет на этот счет какой-то полезной информации. Совет: ориентируйтесь на соответствующий код VBA и адаптируйте его к VB.NET.
1
0 / 0 / 0
Регистрация: 30.11.2017
Сообщений: 5
01.12.2017, 15:19  [ТС] 6
вот с адаптацией как раз и вопрос
код из VBA вытягиваю
но почему то не могу адаптировать
будем искать значит
спасибо

Добавлено через 1 час 18 минут
вопрос адаптации выявился до очень простой
https://msdn.microsoft.com/en-... ion-office
замена на код
коды долго искал почему то
0
4407 / 3531 / 843
Регистрация: 02.02.2013
Сообщений: 3,417
Записей в блоге: 2
01.12.2017, 20:36 7
susak, думаю, будет полезен и этот ресурс (для версий начиная с 2007) https://bettersolutions.com/index.htm
0
01.12.2017, 20:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.12.2017, 20:36
Помогаю со студенческими работами здесь

Создание файла и построение графика в Excel
Необходимо с помощью Visual C++ по двум массивам построить в Excel график. Каким образом это можно...

Создание Excel графика по данным с разных листов
Господа, добрый день и спасибо, что заглянули. У меня проблемма. Есть данные на разных листах...

Создание в электронной таблице MS Excel графика параметрически заданной функции
Господа программисты помогите с этим разобраться:

Создание в электронной таблице MS Excel графика параметрически заданной функции
Дорогие программисты помогите с этим разобраться:


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru