تقييم الموضوع :
  • 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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  تصدير بيانات DataGridView1 الى ملف Excel mr_hso 5 253 24-01-21, 12:48 AM
آخر رد: mr_hso
  [VB.NET] جمع datatable بشروط Hussien Gouda 2 121 14-01-21, 09:39 AM
آخر رد: Hussien Gouda
  تصدير بيانات من برنامج بالفيجوال بيسك الى ال EXCEL mohammed_abdu 1 267 16-12-20, 02:29 PM
آخر رد: nrkarat
  [مشروع] مطلوب نظام سوبرماركت مفتوح المصدر ah9999 15 4,636 05-10-20, 03:42 PM
آخر رد: drsh1991
  [نقاش] استفسار بخصوص المشاريع مفتوحة المصدر YazanGhassan 3 531 19-07-20, 07:47 PM
آخر رد: مصمم هاوي
  عمل auto hide لل listbox ابو روضة 5 617 02-07-20, 02:08 PM
آخر رد: ابو روضة
  [VB.NET] كود تصدير قاعدة البيانات إلى ملف Excel محمد العامر 6 851 06-05-20, 01:19 AM
آخر رد: ابراهيم ايبو
Question [VB.NET] ممكن مثال لنقل datatable من خلال sockets kokokemo 1 406 13-04-20, 03:50 PM
آخر رد: aljzazy
Thumbs Up برنامج إدارة الجمعيات الخيرية مفتوح المصدر... الرجاء المساعدة Arabia 50 15,748 17-03-20, 06:09 PM
آخر رد: asemshahen5
Wink [VB.NET] لو سمحتم بدي سورس كود لبرنامج يسوي مثلا Auto like ,auto invite للفيس بوك وشكرا ♥ مقدم Re9x 1 425 14-03-20, 02:19 PM
آخر رد: mohamedahmed1

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


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