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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  جلب بيانات الوقت من قاعدة البيانات access وادخالها في جدول excel alfauori 2 67 09-10-18, 03:25 AM
آخر رد: alfauori
  هل يوجد خاصية للتحكم في عرض الاعمدة بالداتا جريد فيو essawq 7 164 29-09-18, 01:09 PM
آخر رد: essawq
  excel to pdf from v.basic alfauori 1 117 17-07-18, 03:31 AM
آخر رد: elgokr
  [سؤال] البحت عن اسم من excel في جميع الشيتات واضافته الداتا قريد فيو devxs 9 293 11-06-18, 09:42 AM
آخر رد: elgokr
  [مشروع] مشروع سوبرماركت مفتوح المصدر ah9999 5 501 23-04-18, 06:32 PM
آخر رد: بيسك لكل العرب
  [مشروع] مطلوب نظام سوبرماركت مفتوح المصدر ah9999 14 975 22-04-18, 08:45 PM
آخر رد: dell
  [سؤال] استعمال ComboBox عدة مرات ومن نفس المصدر كريم جودي 2 230 09-04-18, 02:51 PM
آخر رد: حريف برمجة
  جعل البرنامج يتحدث من المصدر altho8 4 160 15-02-18, 01:40 AM
آخر رد: عبد العزيز البسكري
  [Solved] - تغير أسماء الأعمدة عند استخراج البيانات الى excel Rabeea Qbaha 10 341 02-02-18, 12:49 AM
آخر رد: طالب برمجة
  [VB.NET] كيف اخذ كل كلمة من ملف text واضعها في excel sheet smsm3650 0 148 28-11-17, 06:02 PM
آخر رد: smsm3650

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


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