我需要以下导出方面的帮助。我有以下表格1;
Public Class Form1
Dim table As New DataTable("table")
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim dgvTextColumn As New DataGridViewTextBoxColumn
DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
DataGridView1.RowTemplate.Height = 120
DataGridView1.AllowUserToAddRows = True
table.Columns.Add("Forename", Type.GetType("System.String"))
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
table.Rows.Add(TextBox1.Text)
DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
DataGridView1.RowTemplate.Height = 120
DataGridView1.AllowUserToAddRows = False
DataGridView1.DataSource = table
Me.Hide()
Form2.Show()
End Sub
在textbox1中输入forename后,用户将选择将加载form2的button3。在form2中,我有以下代码;
Public Class Form2
Dim table As New DataTable("table")
Dim ds As DataSet = Nothing
Dim dt As DataTable = Nothing
Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
ds = New DataSet()
dt = New DataTable()
ds.Tables.Add(dt)
Dim my_DataView As DataView = ds.Tables(0).DefaultView
Me.Datagridview1.DataSource = my_DataView
Dim dgvTextColumn As New DataGridViewTextBoxColumn
Datagridview1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
Datagridview1.RowTemplate.Height = 120
Datagridview1.AllowUserToAddRows = True
table.Columns.Add("Forename", Type.GetType("System.String"))
End Sub
Public Function FlipDataSet(my_DataSet As DataSet) As DataSet
Dim ds As New DataSet()
For Each dt As DataTable In my_DataSet.Tables
Dim table As New DataTable()
For i As Integer = 0 To dt.Rows.Count
table.Columns.Add(Convert.ToString(i))
Next
Dim r As DataRow
For k As Integer = 0 To dt.Columns.Count - 1
r = table.NewRow()
r(0) = dt.Columns(k).ToString()
For j As Integer = 1 To dt.Rows.Count
r(j) = dt.Rows(j - 1)(k)
Next
table.Rows.Add(r)
Next
ds.Tables.Add(table)
Next
Return ds
End Function
Private Sub butNormal_Click(sender As Object, e As EventArgs) Handles ButNormal.Click
Dim datagridview1 As DataView = ds.Tables(0).DefaultView
Me.Datagridview1.DataSource = datagridview1
Butflip.Enabled = True
ButNormal.Enabled = False
End Sub
Private Sub butFlip_Click(sender As Object, e As EventArgs) Handles Butflip.Click
Dim new_ds As DataSet = FlipDataSet(ds)
' Flip the DataSet
Dim my_DataView As DataView = new_ds.Tables(0).DefaultView
Me.Datagridview1.DataSource = my_DataView
Butflip.Enabled = False
ButNormal.Enabled = True
End Sub
Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click
Dim new_ds As DataSet = FlipDataSet(ds)
' Flip the DataSet
Dim my_DataView As DataView = new_ds.Tables(0).DefaultView
Me.Datagridview1.DataSource = my_DataView
Butflip.Enabled = False
ButNormal.Enabled = True
Butflip.Enabled = False
ButNormal.Enabled = True
Datagridview1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
Datagridview1.RowTemplate.Height = 120
Datagridview1.AllowUserToAddRows = False
Datagridview1.DataSource = table
table.Rows.Add(Form1.TextBox1.Text)
'Save to excel with headers
Dim ExcelApp As Object, ExcelBook As Object
Dim ExcelSheet As Object
Dim j As Integer
Dim Proceed As Boolean = False
'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
For i = 1 To Me.Datagridview1.RowCount
.cells(i + 1, 1) = Me.Datagridview1.Rows(i - 1).Cells("Forename").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
当点击button1时,它会导出datagridview中的数据以及标题“Forename”和插入到form1.textbox1.text underneith中的数据,但它应该更改为vertical。这没有发生,我不知道我哪里出错。
有什么建议吗?