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.