技术开发 频道

向DataGrid中导入Excel文件

【IT168 技术资源】

  将整个Excel导入程序的代码如下,在VB.NET 2005下已经通过测试:

'导入Excel数据
Private Sub mImport_Excel_Data(ByVal p_FileName As String, _
ByVal p_First_Row As Integer, _
ByVal p_First_Col As Integer, _
ByVal p_Total_Cols As Integer, _
ByVal p_DataGrid As DataGridView)
'p_FileName 导入数据的文件名
'p_First_Row 导入的起始行
'p_First_Col 导入的起始列
'p_Total_Cols 欲导入的总列数

Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet

Dim I As Integer
Dim J As Integer
Dim intRows As Integer = 0

Dim strRange As String = ""

xlApp = New Excel.Application
xlBook = xlApp.Workbooks.Add
xlBook = xlApp.Workbooks.Open(p_FileName)
'xlSheet = xlBook.Worksheets("Sheet1")
xlSheet = xlBook.ActiveSheet

I = 0
intRows = 0

'得到总的有效行数
'第1列为序号(凡是有序号的都视为有效列)
While Not (CInt(Val(Trim(xlSheet.Range(xlSheet.Cells(p_First_Row + 1 + intRows, 1), xlSheet.Cells(p_First_Row + 1 + intRows, 1)).Text))) = 0)
intRows = intRows + 1
End While

If intRows = 0 Then Return

dgView1.Rows.Clear()

With tspProgress
.Minimum = 0
.Maximum = p_First_Row + intRows + 2
End With

With xlSheet
For I = p_First_Row To p_First_Row + intRows
tspProgress.Value = I

p_DataGrid.Rows.Add()
p_DataGrid.Rows(I - p_First_Row).Cells(0).Value = I - p_First_Row + 1

For J = p_First_Col To p_Total_Cols
'strRange = Chr(64 + J) & I
'p_DataGrid.Rows(I - p_First_Row).Cells(J - 1).Value = xlSheet.Range(strRange, strRange).Text
p_DataGrid.Rows(I - p_First_Row).Cells(J - 1).Value = xlSheet.Range(.Cells(I, J), .Cells(I, J)).Text
Next J
Next I

End With

tspProgress.Value = 0

xlSheet = Nothing
xlBook.Close()
xlApp.Quit()
xlBook = Nothing
xlApp = Nothing
End Sub

以上看到,可以采用2种方式得到Excel单元格的数据:
[1]
strRange = Chr(64 + J) & I
p_DataGrid.Rows(I - p_First_Row).Cells(J - 1).Value = xlSheet.Range(strRange, strRange).Text

[2]
p_DataGrid.Rows(I - p_First_Row).Cells(J - 1).Value = xlSheet.Range(.Cells(I, J), .Cells(I, J)).Text

0
相关文章