تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
جعل الاعمدة auto fit في ملف ال excel المصدر من datatable
#1
السلام عليكم
 عندي class حصلت علية من المنتدى يقوم بنقل البيانات من ال datatable الى ملف excel
يعمل بشكل ممتاز لكن اريد ان اعدل علية ليقوم بجعل عرض الاعمدة في ملف ال excel بنفس عرض الاعمدة 
في ال datagrid او ان تكون الاعمدة auto-fit حسب حجم البيانات في العمود

ارجو المساعدة

PHP كود :
Imports System.IO
Public Class ExportToExcelClr
    Public Sub ExportToExcel
(datatable As DataTableGV As DataGridViewfilename As StringOptional OpenDialog As Boolean FalseOptional SameColumnsWidth As Boolean True)
 
       Dim FlNm As String ""
 
       Dim sv As New SaveFileDialog
        sv
.FileName filename
        sv
.Filter "|*.xls"
 
       If sv.ShowDialog <> DialogResult.OK Then Exit Sub
        FlNm 
sv.FileName
        Dim fs 
As New StreamWriter(FlNmFalse)
 
       With fs
            
.WriteLine("<?xml version=""1.0""?>")
 
           .WriteLine("<?mso-application progid=""Excel.Sheet""?>")
 
           .WriteLine("<Workbook xmlns=""urn:schemas-microsoft-com:office:spreadsheet"">")
 
           .WriteLine("  <Styles>")
 
           .WriteLine("  <Style ss:ID=""hdr"">")
 
           .WriteLine("  <Alignment ss:Horizontal=""Center""/>")
 
           .WriteLine("  <Borders>")
 
           .WriteLine("    <Border ss:Position=""Left"" ss:LineStyle=""Continuous"" ss:Weight=""1""/>")
 
           .WriteLine("    <Border ss:Position=""Right"" ss:LineStyle=""Continuous"" ss:Weight=""1""/>")
 
           .WriteLine("    <Border ss:Position=""Top"" ss:LineStyle=""Continuous"" ss:Weight=""1""/>")
 
           .WriteLine("  </Borders>")
 
           .WriteLine("  <Font ss:FontName=""Droid Arabic Kufi"" ss:Size=""8"" ss:Bold=""1""/>"'SET FONT
            .WriteLine("  </Style>")
            .WriteLine("  <Style ss:ID=""ksg"">")
            .WriteLine("  <Alignment ss:Vertical=""Bottom""/>")
            .WriteLine("  <Borders/>")
            .WriteLine("  <Font ss:FontName=""Arial""/>") '
SET FONT
            
.WriteLine("  </Style>")
 
           .WriteLine("  <Style ss:ID=""isi"">")
 
           .WriteLine("  <Borders>")
 
           .WriteLine("    <Border ss:Position=""Bottom"" ss:LineStyle=""Continuous"" ss:Weight=""1""/>")
 
           .WriteLine("    <Border ss:Position=""Left"" ss:LineStyle=""Continuous"" ss:Weight=""1""/>")
 
           .WriteLine("    <Border ss:Position=""Right"" ss:LineStyle=""Continuous"" ss:Weight=""1""/>")
 
           .WriteLine("    <Border ss:Position=""Top"" ss:LineStyle=""Continuous"" ss:Weight=""1""/>")
 
           .WriteLine("  </Borders>")
 
           .WriteLine("  <Font ss:FontName=""Arial"" ss:Size=""11""/>")
 
           .WriteLine("  </Style>")
 
           .WriteLine("  </Styles>")
 
           .WriteLine("  <Worksheet ss:Name=""sheet1"">")
 
           .WriteLine("  <Table>")

 
           For i As Integer 0 To GV.ColumnCount 1
                
.WriteLine("  <Column ss:AutoFitWidth=""0""/>")
 
           Next

            
.WriteLine("  <Row ss:StyleID=""ksg"">")

 
           For i As Integer 0 To GV.ColumnCount 1
                Application
.DoEvents()
 
               .WriteLine("  <Cell ss:StyleID=""hdr"">")
 
               .WriteLine("    <Data ss:Type=""String"">{0}</Data>"GV.Columns.Item(i).HeaderText)
 
               .WriteLine("  </Cell>")
 
           Next


            
.WriteLine("  </Row>")
 
           For intRow As Integer 0 To datatable.Rows.Count 1
                Application
.DoEvents()
 
               .WriteLine("  <Row ss:StyleID=""ksg"" ss:utoFitHeight =""0"">")
 
               For intCol As Integer 0 To datatable.Columns.Count 1
                    Application
.DoEvents()
 
                   .WriteLine("  <Cell ss:StyleID=""isi"">")
 
                   .WriteLine("  <Data ss:Type=""String"">{0}</Data>"GV.Item(intColintRow).Value.ToString)
 
                   .WriteLine("  </Cell>")
 
               Next
                
.WriteLine("  </Row>")
 
           Next
            
.WriteLine("  </Table>")
 
           .WriteLine("  </Worksheet>")
 
           .WriteLine("</Workbook>")
 
           .Close()
 
           If OpenDialog Then
                Dim msg1
                msg1 
MsgBox("تم الاستخراج ... هل تريد فتح الملف ؟"MsgBoxStyle.YesNo MsgBoxStyle.Question"Export")
 
               If msg1 vbNo Then Exit Sub
                Process
.Start(FlNm)
 
           End If
 
       End With
    End Sub
    Sub DataGridView_COLORE_FOR_ME
(ByVal DataGridViewXT As Object)
 
       Try
            
'-------------------------------------------------------------------------------------------
            DataGridViewXT.DefaultCellStyle.BackColor = Color.FromArgb(255, 255, 255)
            DataGridViewXT.AlternatingRowsDefaultCellStyle.BackColor = Color.FromArgb(255, 255, 192)
            '
-------------------------------------------------------------------------------------------
 
       Catch ex As Exception
            MsgBox
(ex.MessageMsgBoxStyle.Critical MsgBoxStyle.MsgBoxRight MsgBoxStyle.MsgBoxRtlReading"Error")
 
       End Try
 
   End Sub
End 
Class 
الرد
تم الشكر بواسطة:
#2
الكلاس كاملة حتى عرض العامود بالقيمة true عند إستدعائها من الفورم كالاتي : 
1 - هاكذا تأخذ عرض العامود في جدول الفورم

كود :
Dim clr As New ExportToExcelClr
clr.ExportToExcel(DataGridView1, True, True)
2 - هاكذ تكون الاعمدة auto-fit

كود :
Dim clr As New ExportToExcelClr
clr.ExportToExcel(DataGridView1, True, False)

سبحان الله وبحمده و الحمد لله ولا اله الا الله والله اكبر
الرد
تم الشكر بواسطة: elgokr


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  Microsoft.Office.Interop.Excel غير مدرج +yassen+ 2 75 24-11-18, 01:36 AM
آخر رد: Rabeea Qbaha
  جلب بيانات الوقت من قاعدة البيانات access وادخالها في جدول excel alfauori 2 127 09-10-18, 03:25 AM
آخر رد: alfauori
  هل يوجد خاصية للتحكم في عرض الاعمدة بالداتا جريد فيو essawq 7 220 29-09-18, 01:09 PM
آخر رد: essawq
  excel to pdf from v.basic alfauori 1 145 17-07-18, 03:31 AM
آخر رد: elgokr
  [سؤال] البحت عن اسم من excel في جميع الشيتات واضافته الداتا قريد فيو devxs 9 347 11-06-18, 09:42 AM
آخر رد: elgokr
  [مشروع] مشروع سوبرماركت مفتوح المصدر ah9999 5 599 23-04-18, 06:32 PM
آخر رد: بيسك لكل العرب
  [مشروع] مطلوب نظام سوبرماركت مفتوح المصدر ah9999 14 1,194 22-04-18, 08:45 PM
آخر رد: dell
  [سؤال] استعمال ComboBox عدة مرات ومن نفس المصدر كريم جودي 2 274 09-04-18, 02:51 PM
آخر رد: حريف برمجة
  جعل البرنامج يتحدث من المصدر altho8 4 227 15-02-18, 01:40 AM
آخر رد: عبد العزيز البسكري
  [Solved] - تغير أسماء الأعمدة عند استخراج البيانات الى excel Rabeea Qbaha 10 440 02-02-18, 12:49 AM
آخر رد: طالب برمجة

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم