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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  auto hide alshandodi 0 49 03-02-19, 05:56 PM
آخر رد: alshandodi
  [VB.NET] مشكلة في DataTable محمد بوقزاحة 2 171 27-01-19, 11:15 AM
آخر رد: محمد بوقزاحة
  [سؤال] استعمال ComboBox عدة مرات ومن نفس المصدر كريم جودي 3 398 19-01-19, 02:45 PM
آخر رد: alsouf
  Microsoft.Office.Interop.Excel غير مدرج +yassen+ 2 143 24-11-18, 01:36 AM
آخر رد: Rabeea Qbaha
  جلب بيانات الوقت من قاعدة البيانات access وادخالها في جدول excel alfauori 2 197 09-10-18, 03:25 AM
آخر رد: alfauori
  هل يوجد خاصية للتحكم في عرض الاعمدة بالداتا جريد فيو essawq 7 318 29-09-18, 01:09 PM
آخر رد: essawq
  excel to pdf from v.basic alfauori 1 193 17-07-18, 03:31 AM
آخر رد: elgokr
  [سؤال] البحت عن اسم من excel في جميع الشيتات واضافته الداتا قريد فيو devxs 9 414 11-06-18, 09:42 AM
آخر رد: elgokr
  [مشروع] مشروع سوبرماركت مفتوح المصدر ah9999 5 718 23-04-18, 06:32 PM
آخر رد: بيسك لكل العرب
  [مشروع] مطلوب نظام سوبرماركت مفتوح المصدر ah9999 14 1,418 22-04-18, 08:45 PM
آخر رد: dell

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


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