نوشته شده توسط
پرستو پارسایی
با سلام چطور میتونم یک فایل xlsx اکسل رو ببرم تو یک دیتا گرید ممنون میشم دوستان در صورت اطلاع پاسخ دهید سپاسگزارم
db.png
اگر از یک کمپوننت که فایل های Excel رو میخونه استفاده کنید (مثلا Aspose.Cells) که بر اساس راهنمای همون کمپوننت داده ازش می خونید و در DataGridView به شکلی که مایل هستید درج می کنید.
ولی اگر میخواهید مستقیما از Excel بصورت یک منبع داده استفاده کنید، Connection String مناسب اش رو بکار می برید.
مثلا با استفاده از Microsoft.ACE.OLEDB.12.0
Dim path = "D:\MyFolder\MyFile.xlsx"
Dim header = "YES"
Dim conString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & path & ";Extended Properties=""Excel 12.0 Xml;HDR=" & header & """"
Using connection = New OleDb.OleDbConnection(conString)
Using adaper = New OleDb.OleDbDataAdapter("Select * From [Sheet1$]", connection)
Dim dt = New DataTable()
adaper.Fill(dt)
DataGridView1.DataSource = dt
End Using
End Using
اون header مشخص می کنه که سطر اول برای مشخص کردن عنوان ستون ها است.
Microsoft ACE OLEDB هم نسخه 32 بیتی و هم نسخه 64 بیتی داره و هم در برنامه 32 بیتی و هم 64 بیتی قابل استفاده است.
یا مثلا با استفاده از Microsoft.Jet.OLEDB.4.0
Dim path = "D:\MyFolder\MyFile.xlsx"
Dim header = "YES"
Dim imex = "1"
Dim conString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & path & ";Extended Properties=""Excel 8.0;HDR=" & header & ";IMEX=" & imex & """"
Using connection = New OleDb.OleDbConnection(conString)
Using adaper = New OleDb.OleDbDataAdapter("Select * From [Sheet1$]", connection)
Dim dt = New DataTable()
adaper.Fill(dt)
DataGridView1.DataSource = dt
End Using
End Using
اون header مشخص می کنه که سطر اول برای مشخص کردن عنوان ستون ها است.
اون imex مشخص می کنه که داده ستون هایی که نوع داده شون ثابت نیست و قاطی پاتی ئه بصورت متن خونده بشن.
برای استفاده از Microsoft Jet در تنظیمات پروژه (منوی Project گزینه projectName} Properties} زبانه Compile) نوع Target CPU رو x86 انتخاب کنید تا برنامه 32 بیتی ساخته بشه.
اینکار رو حتما انجام بدهید، چون Microsoft Jet نسخه 64 بیتی نداره و برنامه 64 بیتی نمیتونه از این ارتباط استفاده کنه.