caf20012 Ответов: 0

Datagridview to excel-вертикальный экспорт


Всем Привет,

В настоящее время у меня есть datagridview с несколькими столбцами и различными заголовками, в которых данные заполняются из combobox, textbox и т. д. под заголовком. При нажатии на кнопку "Экспорт" данные отображаются горизонтально в excel, и я хочу, чтобы они отображались вертикально с заголовками в столбце " А "и ответами рядом с ними в столбце "В". Ниже приведен код экспорта данных;
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
        DataGridView1.RowTemplate.Height = 120
        DataGridView1.AllowUserToAddRows = False
        DataGridView1.DataSource = table

        table.Rows.Add(Form4.TextBox1.Text, Form4.TextBox2.Text, Form4.TextBox3.Text, Form4.TextBox4.Text, Form4.TextBox5.Text, Form4.TextBox6.Text, Form4.TextBox7.Text, Form4.DateTimePicker2.Text, Form4.Gender.ToString, Form4.RichTextBox1.Text, Form4.RichTextBox2.Text, ComboBox1.Text, ProcedureType.ToString, RichTextBox1.Text, FractureType.ToString, ComboBox2.Text, ComboBox3.Text, ComboBox4.Text, Debridement.ToString, ComboBox5.Text, Fixation.ToString, ComboBox6.Text)

        'Save to excel with headers
        Dim ExcelApp As Object, ExcelBook As Object
        Dim ExcelSheet As Object
        Dim j As Integer
        Dim PicFile As String = IO.Path.Combine(Application.StartupPath, "Image.jpg")
        Dim Proceed As Boolean = False
        Form4.PictureBox1.Image.Save(PicFile, System.Drawing.Imaging.ImageFormat.Jpeg)



        'create object of exce
        ExcelApp = CreateObject("Excel.Application")
        ExcelBook = ExcelApp.WorkBooks.Add
        ExcelSheet = ExcelBook.WorkSheets(1)

        With ExcelSheet
            For Each column As DataGridViewColumn In DataGridView1.Columns
                .cells(1, column.Index + 1) = column.HeaderText
            Next
            Dim excelRowIndex = 2
            Dim picX = 50
            Dim picY = 50
            For Each row As DataGridViewRow In DataGridView1.Rows
                For j = 0 To DataGridView1.Columns.Count - 1
                    If (j = 0) Then
                        .Shapes.AddPicture(PicFile, Microsoft.Office.Core.MsoTriState.msoFalse,
                                           Microsoft.Office.Core.MsoTriState.msoCTrue, picX, picY, 200, 100)
                        picX += 10
                        picY += 10
                    Else
                        .cells(excelRowIndex, j + 1) = row.Cells(j).Value
                    End If
                Next
                excelRowIndex += 1
            Next
                For i = 1 To Me.DataGridView1.RowCount
                    .cells(i + 1, 1) = Me.DataGridView1.Rows(i - 1).Cells("Surgeon").Value
                    For j = 1 To DataGridView1.Columns.Count - 1
                        .cells(i + 1, j + 1) = DataGridView1.Rows(i - 1).Cells(j).Value
                    Next
                    Dim formatRange As Excel.Range
                    formatRange = ExcelSheet.Range("a1")
                    formatRange.EntireRow.Font.Bold = True
                    formatRange = ExcelSheet.Range("A1", "V1")
                    formatRange.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.LightBlue)
                    formatRange.BorderAround(Excel.XlLineStyle.xlContinuous)
                    formatRange = ExcelSheet.Range("a1", "V1")
                    formatRange.EntireRow.BorderAround()
                Next
            End With

            ExcelApp.Visible = True
            '
            ExcelSheet = Nothing
            ExcelBook = Nothing
            ExcelApp = Nothing

            Application.Exit()
            End
    End Sub


Есть какие-нибудь предложения, как я могу изменить этот формат? значит, он показывает вертикально?

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

Поиск форума и веб-браузеров

Maciej Los

В этом нет ничего сложного. Используй свою логику!

caf20012

Какие-нибудь указания? Я довольно новыми для vb.net так бы любая поддержка

caf20012

Мне было предложено использовать следующий код из ; https://www.codeproject.com/Articles/19313/Displaying-Vertical-Rows-in-DataGrid-View я изо всех сил пытаюсь перейти с c# 2005 на vb.net 2013 год. Кто-нибудь может помочь?!

0 Ответов