Dart:
การทำงานกับ CSV

วิธีการ:

ในการจัดการไฟล์ CSV ใน Dart คุณมักจะประมวลผลข้อความด้วยตนเองหรือใช้ไลบรารีของบุคคลที่สามเพื่อทำให้งานง่ายขึ้น ที่นี่เราจะดูทั้งสองวิธี

การแยกข้อมูล CSV ด้วยตนเอง

หากความต้องการของคุณเป็นเรื่องง่าย คุณอาจเลือกที่จะแยกข้อมูล CSV ด้วยมือ สามารถทำได้โดยใช้ฟังก์ชันการจัดการสายอักขระหลักของ Dart:

void main() {
  // ข้อมูล CSV ตัวอย่าง
  String csvData = "Name,Age,Email\nJohn Doe,30,[email protected]\nJane Smith,25,[email protected]";
  
  // แยกข้อมูล CSV เป็นบรรทัด
  List<String> lines = csvData.split('\n');
  
  // แยกแต่ละบรรทัด
  List<Map<String, String>> data = [];
  List<String> headers = lines.first.split(',');
  
  for (var i = 1; i < lines.length; i++) {
    List<String> row = lines[i].split(',');
    Map<String, String> record = {};
    for (var j = 0; j < headers.length; j++) {
      record[headers[j]] = row[j];
    }
    data.add(record);
  }
  
  // แสดงข้อมูลที่ถูกแยก
  print(data);
}

// ตัวอย่างผลลัพธ์:
// [{Name: John Doe, Age: 30, Email: john@example.com}, {Name: Jane Smith, Age: 25, Email: jane@example.com}]

การใช้งานไลบรารีของบุคคลที่สาม: csv

สำหรับสถานการณ์ที่ซับซ้อนมากขึ้นหรือเพื่อทำให้โค้ดของคุณเรียบง่าย คุณสามารถใช้ไลบรารีของบุคคลที่สามที่นิยม เช่น csv ขั้นแรก ให้เพิ่มไลบรารีนี้ลงในโปรเจกต์ของคุณโดยใส่ csv: ^5.0.0 (หรือเวอร์ชันล่าสุด) ไว้ในไฟล์ pubspec.yaml ภายใต้ dependencies จากนั้นใช้งานดังนี้:

import 'package:csv/csv.dart';

void main() {
  String csvData = "Name,Age,Email\nJohn Doe,30,[email protected]\nJane Smith,25,[email protected]";
  
  // ใช้ CsvToListConverter เพื่อแยกข้อมูล CSV
  List<List<dynamic>> listData = const CsvToListConverter().convert(csvData);
  
  // รายการแรกประกอบด้วยหัวข้อ
  List<String> headers = listData.first.map((item) => item.toString()).toList();
  
  // ลบแถวหัวข้อก่อนจะประมวลผลต่อ
  listData.removeAt(0);
  
  // แปลงเป็น List<Map<String, dynamic>> เพื่อรูปแบบที่มีโครงสร้างมากขึ้น
  List<Map<String, dynamic>> mappedData = listData.map((list) {
    Map<String, dynamic> map = {};
    for (int i = 0; i < headers.length; i++) {
      map[headers[i]] = list[i];
    }
    return map;
  }).toList();
  
  // แสดงข้อมูลที่ถูกแก้ไข
  print(mappedData);
}

// ตัวอย่างผลลัพธ์:
// [{Name: John Doe, Age: 30, Email: john@example.com}, {Name: Jane Smith, Age: 25, Email: jane@example.com}]

ทั้งสองวิธีนี้แสดงวิธีการทำงานกับข้อมูล CSV: วิธีแรกด้วยมือสำหรับวัตถุประสงค์ในการเรียนรู้หรือเมื่อจัดการกับโครงสร้าง CSV ที่ง่ายมาก; ส่วนที่สอง โดยใช้ไลบรารีที่ทรงพลังที่ทำให้การแยกวิเคราะห์ง่ายขึ้นและสามารถจัดการกับความซับซ้อนต่างๆ ของรูปแบบ CSV.