تدفق الكتابة

حدد StreamWriter نوع كاتب الدفق.

type StreamWriter struct {
    File    *File
    Sheet   string
    SheetID int
    // يحتوي على حقول مصفاة أو غير مُصدرة
}

يمكن استخدام Cell مباشرةً في StreamWriter.SetRow لتحديد نمط وقيمة.

type Cell struct {
    StyleID int
    Formula string
    Value   interface{}
}

تحدد RowOpts خيارات الصف المحدد ، ويمكن استخدامها مباشرة في StreamWriter.SetRow لتحديد نمط الصف وخصائصه.

type RowOpts struct {
    Height       float64
    Hidden       bool
    StyleID      int
    OutlineLevel int
}

الحصول على دفق الكاتب

func (f *File) NewStreamWriter(sheet string) (*StreamWriter, error)

تقوم NewStreamWriter بإرجاع بنية كاتب الدفق بواسطة اسم ورقة العمل المعطى المستخدم لكتابة البيانات على ورقة عمل فارغة جديدة مع كميات كبيرة من البيانات. لاحظ أنه بعد كتابة البيانات باستخدام كاتب الدفق لورقة العمل ، يجب عليك استدعاء طريقة Flush لإنهاء عملية الكتابة المتدفقة ، والتأكد من أن ترتيب أرقام الصفوف تصاعدي عند تعيين الصفوف ، ووظائف الوضع العادي ووظائف وضع الدفق لا يمكن عمل مختلط لكتابة البيانات على أوراق العمل. سيحاول كاتب الدفق استخدام الملفات المؤقتة على القرص لتقليل استخدام الذاكرة عندما تقطع البيانات في الذاكرة أكثر من 16 ميغا بايت ، ولا يمكنك الحصول على قيمة الخلية في هذا الوقت. على سبيل المثال ، قم بتعيين البيانات لورقة عمل بحجم 102400 صفًا × 50 عمودًا بالأرقام والنمط:

f := excelize.NewFile()
defer func() {
    if err := f.Close(); err != nil {
        fmt.Println(err)
    }
}()
sw, err := f.NewStreamWriter("Sheet1")
if err != nil {
    fmt.Println(err)
    return
}
styleID, err := f.NewStyle(&excelize.Style{Font: &excelize.Font{Color: "777777"}})
if err != nil {
    fmt.Println(err)
    return
}
if err := sw.SetRow("A1",
    []interface{}{
        excelize.Cell{StyleID: styleID, Value: "Data"},
        []excelize.RichTextRun{
            {Text: "Rich ", Font: &excelize.Font{Color: "2354e8"}},
            {Text: "Text", Font: &excelize.Font{Color: "e83723"}},
        },
    },
    excelize.RowOpts{Height: 45, Hidden: false}); err != nil {
    fmt.Println(err)
    return
}
for rowID := 2; rowID <= 102400; rowID++ {
    row := make([]interface{}, 50)
    for colID := 0; colID < 50; colID++ {
        row[colID] = rand.Intn(640000)
    }
    cell, err := excelize.CoordinatesToCellName(1, rowID)
    if err != nil {
        fmt.Println(err)
        break
    }
    if err := sw.SetRow(cell, row); err != nil {
        fmt.Println(err)
        break
    }
}
if err := sw.Flush(); err != nil {
    fmt.Println(err)
    return
}
if err := f.SaveAs("Book1.xlsx"); err != nil {
    fmt.Println(err)
}

تعيين قيمة الخلية وصيغة الخلية لورقة عمل باستخدام كاتب الدفق:

err := sw.SetRow("A1", []interface{}{
    excelize.Cell{Value: 1},
    excelize.Cell{Value: 2},
    excelize.Cell{Formula: "SUM(A1,B1)"}})

تعيين قيمة الخلية ونمط الصفوف لورقة عمل باستخدام كاتب الدفق:

err := sw.SetRow("A1", []interface{}{
    excelize.Cell{Value: 1}},
    excelize.RowOpts{StyleID: styleID, Height: 20, Hidden: false})

قم بتعيين قيمة الخلية ورقم مستوى المخطط التفصيلي للصف لورقة عمل باستخدام كاتب الدفق:

err := sw.SetRow("A1", []interface{}{
    excelize.Cell{Value: 1}}, excelize.RowOpts{OutlineLevel: 1})

كتابة صف ورقة إلى الدفق

func (sw *StreamWriter) SetRow(cell string, values []interface{}, opts ...RowOpts) error

يكتب SetRow مصفوفة لصف الدفق بإعطاء إحداثي بداية ومؤشر لنوع المصفوفة slice. لاحظ أنه يجب عليك استدعاء طريقة Flush لإنهاء عملية الكتابة المتدفقة.

إضافة جدول إلى تيار

func (sw *StreamWriter) AddTable(table *Table) error

يقوم AddTable بإنشاء جدول Excel لـ StreamWriter باستخدام منطقة الإحداثيات المحددة ومجموعة التنسيق.

مثال 1 ، أنشئ جدولاً من "A1: D5":

err := sw.AddTable(&excelize.Table{Range: "A1:D5"})

مثال 2 ، أنشئ جدولاً من F2:H6 مع ضبط التنسيق:

disable := false
err := sw.AddTable(&excelize.Table{
    Range:             "F2:H6",
    Name:              "table",
    StyleName:         "TableStyleMedium2",
    ShowFirstColumn:   true,
    ShowLastColumn:    true,
    ShowRowStripes:    &disable,
    ShowColumnStripes: true,
})

لاحظ أن الجدول يجب أن يتكون من سطرين على الأقل بما في ذلك الرأس. يجب أن تحتوي خلايا الرأس على سلاسل ويجب أن تكون فريدة. حاليًا ، يُسمح بجدول واحد فقط لـ StreamWriter. يجب استدعاء AddTable بعد كتابة الصفوف ولكن قبل Flush. راجع AddTable للحصول على تفاصيل حول تنسيق الجدول.

إدراج فاصل صفحة للدفق

func (sw *StreamWriter) InsertPageBreak(cell string) error

يُنشئ InsertPageBreak فاصل صفحة لتحديد مكان انتهاء الصفحة المطبوعة وأين يبدأ الفصل التالي بمرجع خلية معين ، وستتم طباعة المحتوى قبل فاصل الصفحة على صفحة واحدة وبعد فاصل الصفحة على أخرى.

تعيين جزء النافذة للدفق

func (sw *StreamWriter) SetPanes(panes *Panes) error

يوفر SetPanes وظيفة لإنشاء وإزالة ألواح التجميد وتقسيم الألواح عن طريق إعطاء خيارات الأجزاء لـ StreamWriter. لاحظ أنه يجب استدعاء الدالة SetPanes قبل الدالة SetRow.

دمج الخلية للدفق

func (sw *StreamWriter) MergeCell(topLeftCell, bottomRightCell string) error

يوفر MergeCell وظيفة لدمج الخلايا بواسطة منطقة إحداثيات معينة لـ StreamWriter. لا تقم بإنشاء خلية مدمجة تتداخل مع خلية مدمجة أخرى موجودة.

تعيين عرض العمود في الدفق

func (sw *StreamWriter) SetColWidth(min, max int, width float64) error

يوفر SetColWidth دالة لتعيين عرض عمود واحد أو أعمدة متعددة ل StreamWriter. لاحظ أنه يجب استدعاء الدالة SetColWidth قبل الدالة SetRow. على سبيل المثال تعيين العمود عرض B:C ك 20:

err := sw.SetColWidth(2, 3, 20)

تدفق الدفق

func (sw *StreamWriter) Flush() error

Flush إنهاء عملية الكتابة المتدفقة.

results matching ""

    No results matching ""