اذهب إلى المحتوى

السؤال

نشر

استخدم هذا الكود للقراءة من ملف Excel وهو يعمل بشكل طبيعي عندما اقوم بالقراءة من ملف يحتوي على اقل من 10 الف سطر 

var bytes = File(_Path).readAsBytesSync();
var excel = Excel.decodeBytes(bytes);
for (var table in excel.tables.keys) {
	for (var row in excel.tables[table]!.rows) {
		await _database.SetData("INSERT INTO Products('ID','Name','Code') VALUES    ('${int.parse(row[0]!.value.toString())}','${row[1]!.value.toString()}','${row[2]!.value.toString()}')");
	}
}

ولكن عندما يتخطى عدد الاسطر 10 الف فان النتائج لا تكون صحيحه بنسبة 100% 

 

كما هو موضح في الصورة في بعض الا حيان يقوم بالتبديل بين حقل الاسم وحقل الكود

لقطة الشاشة 2023.png

Recommended Posts

  • 0
نشر

ربما الخطأ ناجمًا عن طريقة تخزين البيانات في ملف Excel، وعلى الأرجح يتعلق بطريقة قراءة الملفات في Flutter.

حاول تجربة استخدام مكتبة أخرى للقراءة من ملفات Excel مثل flutter_excel أو excel بدلاً من استخدام مكتبة dart_excel المستخدمة حاليًا.

ويمكن استخدام الكود التالي للقراءة من ملف Excel باستخدام مكتبة excel:

import 'package:excel/excel.dart';
import 'dart:io';

var file = "path/to/file.xlsx";
var bytes = File(file).readAsBytesSync();
var excel = Excel.decodeBytes(bytes);

for (var table in excel.tables.keys) {
  for (var row in excel.tables[table]!.rows) {
    print("$table -> $row");
  }
}

ويجب تعديل الكود أعلاه واستخدام المكتبة المذكورة والتي توفر واجهات للقراءة والكتابة من وإلى ملفات Excel في Flutter.

  • 0
نشر

لمعالجة هذه المشكلة، يمكنك استخدام التقسيم الدفعي لمعالجة البيانات على مدار عدة دفعات بدلاً من محاولة قراءة كل البيانات في ذاكرة الوصول العشوائي في وقت واحد. يمكنك استخدام مكتبة dart:async وفئة Stream في Flutter لتحقيق ذلك. على سبيل المثال، يمكنك استخدام الكود التالي لقراءة ملف Excel وتقسيمه إلى عدة دفعات:

var bytes = File(_Path).readAsBytesSync();
var excel = Excel.decodeBytes(bytes);

final batchSize = 1000;
final rows = excel.tables.values.first.rows;

final batches = <List<List<dynamic>>>[];

for (var i = 0; i < rows.length; i += batchSize) {
  final batch = rows.skip(i).take(batchSize).toList();
  batches.add(batch);
}

for (final batch in batches) {
  for (final row in batch) {
    await _database.SetData("INSERT INTO Products('ID','Name','Code') VALUES    ('${int.parse(row[0]!.value.toString())}','${row[1]!.value.toString()}','${row[2]!.value.toString()}')");
  }
}

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

هناك بعض الحلول الأخرى التي يمكن استخدامها لحل مشكلة قراءة ملف Excel بشكل صحيح في Flutter:

  1. استخدام مكتبة مخصصة للعمل مع ملفات Excel: يمكن استخدام مكتبات مثل xlsx أو excel للعمل مع ملفات Excel. يمكنك استخدام هذه المكتبات لقراءة البيانات من ملف Excel وتحويلها إلى بيانات مفيدة في Flutter.
  2. استخدام خدمة خادم (Server) لمعالجة البيانات: يمكن استخدام خادم لمعالجة البيانات على نحو فعال قبل إرجاعها إلى تطبيق Flutter. يمكن استخدام خدمات مثل Google Sheets API أو Microsoft Excel API للوصول إلى بيانات Excel ومعالجتها وإرجاعها بصورة مفيدة.
  3. تحسين أداء التطبيق: يمكن تحسين أداء التطبيق الخاص بك بتطبيق ممارسات البرمجة الجيدة وتحسين الأداء. يمكن استخدام الأدوات المتاحة مثل flutter devtools لتحليل وتحسين أداء التطبيق الخاص بك.

بالتوفيق.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...