PDA

View Full Version : یک کلاس جهت ارسال اطلاعات DataGridView به Excel



bah_jaf
سه شنبه 21 آبان 1387, 15:10 عصر
سلام دوستان در زیر یک کلاس هست که وقتی یک شی از نوع دیتا گرید ویو بگیره یک فایل اکسل ازش درست میکنه.
اگر کسی از اساتید هم نظر سازنده ای داره خوشحال میشم بشنوم.

نحوه صدا زدنش هم بصورت زیر هست :



ExportExcel.Make(mygrdview1) 'Call






Public
Class ExportExcel

SharedFunction Make(ByVal Grd As System.Windows.Forms.DataGridView) AsBoolean

Dim oldCI As System.Globalization.CultureInfo
oldCI = System.Threading.Thread.CurrentThread.CurrentCultu re
System.Threading.Thread.CurrentThread.CurrentCultu re = _
New System.Globalization.CultureInfo("en-US")
Dim x AsNew System.Windows.Forms.SaveFileDialog
x.Filter = "Excel File(*.XLS)|*.xls"

x.FileName =


"Report"

Dim Answer AsInteger = x.ShowDialog()

If Answer = 2 Then ReturnFalse
Dim oExcel AsObject
Dim oWorkBook AsObject
Dim oSheet AsObject

oExcel = CreateObject(


"Excel.Application")

oWorkBook = oExcel.Workbooks.Add

oExcel.visible = False
'For i AsInteger = 0 To Grd.ColumnCount - 1
oSheet.cells(1, i + 1) = Grd.Columns(i).HeaderText
oSheet.cells(1, i + 1).font.name = "Thahoma"

oSheet.cells(1, i + 1).font.bold =


True

Next

For j AsInteger = 0 To Grd.ColumnCount - 1
For i AsInteger = 0 To Grd.RowCount - 1
oSheet.cells(i + 2, j + 1) = Grd.Item(j, i).Value
oSheet.cells(i + 2, j + 1).font.name = "Thahoma"
Next
Next
'oSheet.Application.Visible = True
oSheet.SaveAs(x.FileName)
oSheet = Nothing

oWorkBook =


Nothing

oExcel.quit()

oExcel = Nothing
Return True
End Function

End Class

reza6384
چهارشنبه 22 آبان 1387, 07:29 صبح
سلام.
کار قشنگی بود. گرچه من فکر میکنم Excel جوریه که هر کسی چند وقت یه بار سراغش میاد. من خودم یه بار برای انتقال اطلاعات از Excel این مشکل رو داشتم که تمام سلول هایی رو که توی ستونشون مقدار رشته (string) داشتن ، اگر مقدار اون سلول از نوع Integer بود موقع انتقال اطلاعات هیچ چی نمیومد. یعنی با Excel Connection یا استفاده از Sql Import Wizard نمی شد و مجبور شدم از Microsoft.Office.Interop.Excel استفاده کنم.

اینو از این جهت میگم که کاری که شما کردید گرچه به ظاهر ساده است ، جالبه و ممکنه مورد استفاده قرار بگیره. لطفا اون رو در تاپیک Code Sapmles هم قرار بدین.

bah_jaf
چهارشنبه 22 آبان 1387, 09:08 صبح
ممنون از لطف شما
چشم حتما

odiseh
چهارشنبه 22 آبان 1387, 09:09 صبح
سلام bah_jaf
کارت جالبه بود . من کدت رو خوندم. ولی شما کجا oSheet رو به oWorkBook اضافه کردی که در ادامه باهاش کار کردی؟
بعدشم، آیا ایجاد یک شی برای EXCEL بدون استفاده از CreateObject ، باعث افزایش Performance برنامه نمیشه؟ (لحن سوالی)

جناب Reza6384 اگه ممکنه شما هم کدتون رو در این تاپیک بذارین تا ببینیم (Microsoft.Office.Interop.Excel)

salehbagheri
جمعه 24 آبان 1387, 19:41 عصر
اين كد براي Office 2007 هم جواب ميده! (Xlsx.*)

bah_jaf
شنبه 25 آبان 1387, 10:26 صبح
رو آفیس 2007 تست نکردم
راستش نتونستم کاری کنم که از creatobject استفاده نکنم. شما اگر این لطف رو بکنید منمنون میشم

bah_jaf
شنبه 25 آبان 1387, 10:30 صبح
به نظرم این یه تیکه از کد درست ارسال نشده شرمنده:


Dim oExcel As Object
Dim oWorkBook As Object
Dim oSheet As Object
oExcel = CreateObject("Excel.Application")
oWorkBook = oExcel.Workbooks.Add
oExcel.visible = False
oSheet = oWorkBook.worksheets(1)
For i As Integer = 0 To Grd.ColumnCount - 1