PDA

View Full Version : حرفه ای: ارسال جدول دیتاگرید به ورد



antionline
شنبه 30 فروردین 1393, 15:21 عصر
با سلام خدمت همه اساتید محترم
من یک برنامه ای نوشتم که در بخشی از اون باید اطلاعاتی که درون دیتاگرید هست به برنامه Word انتقال پیدا کنه. البته با حفظ شکل جدول و محتویاتش.
ممنون میشم اگه راهنماییم کنید

majidnazari65
شنبه 30 فروردین 1393, 17:25 عصر
سلام.
اول از منوی Project->Add Reference
microsoft.office.interop.word
رو به پروژتون اضافه کنید.
بعد یه کلاس به صورت زیر تعریف کنید:


Imports Microsoft.Office.Interop

Public Class ExportDGV
Public Shared Sub ExportToWord( byVal dgvForExport As DataGridView)
Dim colsCount As Integer
Dim j As Integer

Dim owApp As New Word.Application
owApp.Visible = False
Dim owDoc As Word.Document = owApp.Documents.Add()
colsCount = 0

For j = 0 To dgvForExport.ColumnCount - 1
If dgvForExport.Columns(j).Visible Then
colsCount += 1
End If
Next j

colsCount += 1
Dim owTable As Word.Table = owDoc.Tables.Add(owDoc.Bookmarks.Item("\endofdoc").Range, dgvForExport.Rows.Count + 1, colsCount)

j = 1
owTable.Cell(1, 1).Range.Text = "ردیف"
For c = 0 To dgvForExport.ColumnCount - 1
If dgvForExport.Columns(c).Visible Then
owTable.Cell(1, j + 1).Range.Text = dgvForExport.Columns(c).HeaderText
j += 1
End If
Next

For r = 0 To owTable.Rows.Count - 2
owTable.Cell(r + 2, 1).Range.Text = (r + 1).ToString
j = 1
For c = 0 To dgvForExport.ColumnCount - 1
If dgvForExport.Columns(c).Visible Then
owTable.Cell(r + 2, j + 1).Range.Text = dgvForExport.Rows(r).Cells(c).Value.ToString
j += 1
End If
Next
Next

owTable.Borders.InsideLineStyle = Word.WdLineStyle.wdLineStyleSingle
owTable.Borders.OutsideLineStyle = Word.WdLineStyle.wdLineStyleSingle
owApp.Visible = True

End Sub

End Class


برای استفاده از کلاس هم کد زیر رو بنویسید:
ExportDGV.ExportToWord(yourDatGridView)

antionline
یک شنبه 31 فروردین 1393, 11:14 صبح
آقا مجید ممنون از راهنماییت. اما از Word.Application , word.table, word.document ایراد میگیره.
رفرنس آفیسی ک گفتید رو Add کردم

majidnazari65
یک شنبه 31 فروردین 1393, 11:28 صبح
خط اول رو نوشتی؟ اگر نه جاهایی که ایراد میگیره قبلش Microsoft.Office.Interop رو اضافه کن.

antionline
یک شنبه 31 فروردین 1393, 11:57 صبح
آره نوشتم، همون رفرنس رو هم Add کردم. یه رفرنس دیگه Microsoft.office.word.object.library12 اگه درست نوشته باشم رو هم Add کردم. نشد
اون کار رو هم کردم نشد

majidnazari65
یک شنبه 31 فروردین 1393, 12:06 عصر
اول توی قسمت References پروژتون ببینید که Microsoft.Office.Interop.Word اضافه شده یا خیر؟
همچنین ماوس رو روی جایی که خطا میگیره ببرید و روی دکمه ضربدری که ظاهر میشه کلیک کنید. یه عکس از اون صفحه بگیرید واینجا قرار بدید ببینیم مشکلش چیه؟

antionline
یک شنبه 31 فروردین 1393, 12:16 عصر
بله اضافه شدن

majidnazari65
یک شنبه 31 فروردین 1393, 12:22 عصر
روی لینک پنجمی (Change 'Word Application' to 'Microsoft.Office.Interop.Word.Application') کلیک کنید ببینید باز هم ارور میده. و اگر ارور داد باز هم یه عکس اینجا بذارید.

antionline
یک شنبه 31 فروردین 1393, 12:30 عصر
بهد نظر من یه رفرنس دیگه هم باید اضافه بشه118186

majidnazari65
یک شنبه 31 فروردین 1393, 14:15 عصر
فکر نمیکنم رفرنس دیگه ای لازم باشه. اون خط رو دوباره به صورت Word.Application بنویس.
این رو هم امتحان کن:
فایل dll مربوط به رفرنس ورد رو از مسیری که توی قسمت Reference پروژه نشون داده توی مسیر دیگه ای کپی کن (مثلا پوشه خود پروژه). و از اون مسیر جدید رفرنس رو به پروژه ات اضافه کن.
همچنین ببین از سایر فایلهایی که توی اون مسیر هست میتونی reference اضافه کنی؟ مثلا رفرنس اکسل و یا outlook ؟

antionline
سه شنبه 02 اردیبهشت 1393, 07:58 صبح
از دوستان کسی نیست راهنمایی کنه؟
از آقا مجید هم ممنونم