2013-06-13 8 views
0

Итак, у меня есть набор данных, который вытаскивает определенные ячейки из файла excel и заполняет столбец datagridview. Однако ячейки, которые я вытягиваю, действительно должны быть заголовками, а не нормальными столбцами в datagridview. Итак, есть ли простой способ превратить этот столбец данных в текст заголовка? Чтобы помочь ellaborate, я предоставил код ниже, включая комментарии.Я ищу способ сделать свой первый столбец в своем datagridview заголовке

' The following lines specify the exact cells I with to pull from the excel file and populates the first column of the datagridview 

MyCommand1 = New OleDbDataAdapter("Select * from [myWorksheet$A15:B21]", MyConnection) 


'Here is my dataset' 
    ds1 = New System.Data.DataSet() 
DataGridView1.DataSource = ds1.Tables(0).DefaultView 
'So at this point I have a datagridview with a column of data from the exact cells 
' from the excel file that I want 


'This last part is code I found on MSDN which will hide the column headers and will turn the first column into headertext. Essentially it is adding an additional column to the left and turning that into headertext. 

Private Sub DataGridView8_CellPainting(sender As Object, e As DataGridViewCellPaintingEventArgs) Handles DataGridView8.CellPainting 
    Dim rowNumber As Integer = 1 

    For Each row As DataGridViewRow In DataGridView8.Rows 
     If row.IsNewRow Then Continue For 
     row.HeaderCell.Value = "Row " & rowNumber 
     rowNumber = rowNumber + 1 
    Next 
    DataGridView8.AutoResizeRowHeadersWidth(_ 
     DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders) 
End Sub 

'If anyone can find out a way for me to make the first column headertext it would make my day. 
+0

Как переключатель col1 как заголовок и col2 в первом ряду? – matzone

+0

Да, это именно то, что я хочу сделать. – stackexchange12

+0

Я не уверен, но я думаю, что для этого потребуется два шага. Переместить столбец в строку в таблице. Затем отобразите его. – matzone

ответ

0

Просто идея ..

Dim tblXls as DataTable = ds1.Tables(0) '---> this is your table 
Dim tblNew as New Datatable 
Dim dc as DataColumn 

For x as Integer = 0 to tblXls.Rows.Count -1 
    dc = New DataColumn 
    dc.DataType = System.Type.GetType("System.DateTime") 
    dc.ColumnName = tblXls.Rows(x).Item(0) 
    tblNew.Columns.Add(dc) 
Next 

Затем установите tblNew в качестве DGV источника данных ..

DataGridView.Datasource = tblNew 

Это только подготовить заголовок .. остальное вы знаете ..

0

Не очень Конечно, но изменение вашего соединения Строка может выполнить эту работу за вас.

connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Test.xlsx;Extended Properties=" + Convert.ToChar(34).ToString() + "Excel 12.0;HDR=Yes;IMEX=2" + Convert.ToChar(34).ToString() + "" 

В коде выше HDR представлены заголовки. Установите HDR = Yes, чтобы показать первую строку в виде заголовков и HDR = No, чтобы показать первую строку как обычные строки.

Вы можете получить больше информации Get Data from MS Excel in asp.net

0

Вы можете заполнить заголовок строки в случае CellFormatting:

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 
    Dim SQL As String = "SELECT [ZIP], [Place] FROM [City_2]" 
    dgv1.DataSource = Gen.GetDataView(SQL) ' load the datasource here 
    dgv1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells) 
    dgv1.Columns(0).Visible = False ' contains same as row header 
    dgv1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders 
End Sub 

Private Sub dgv1_CellFormatting(sender As Object, e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles dgv1.CellFormatting 
    dgv1.Rows(e.RowIndex).HeaderCell.Value = dgv1.Rows(e.RowIndex).Cells(0).Value 
End Sub