[flutter] 플러터 Table 위젯에서 테이블 데이터 CSV 파일로 내보내기

플러터 앱에서 Table 위젯을 사용하여 표 형식의 데이터를 CSV 파일로 내보내는 기능을 구현하는 방법에 대해 이야기하겠습니다.

필요한 패키지 설치

우선 csv 패키지를 사용하여 테이블 데이터를 CSV 파일로 변환할 것입니다. csv 패키지는 Dart에서 CSV 처리를 위한 표준 패키지로 사용됩니다. pubspec.yaml 파일에 다음과 같이 csv 패키지를 추가합니다.

dependencies:
  csv: ^4.0.4

그리고 패키지를 가져옵니다.

import 'package:csv/csv.dart';

Table 데이터 CSV로 변환

테이블 데이터를 CSV로 변환하기 위해, List<List<dynamic>> 형식의 데이터를 준비합니다. 이후에 csv 패키지를 사용하여 CSV 문자열로 변환하고, 이를 파일로 저장합니다.

void exportToCsv(List<List<dynamic>> data) async {
  String csv = const ListToCsvConverter().convert(data);
  // 파일 저장 로직 추가
}

파일 저장 로직 추가

path_provider 패키지를 사용하여 내보낼 파일의 경로를 얻고, 해당 경로에 CSV 파일로 저장합니다.

import 'package:path_provider/path_provider.dart';
import 'package:permission_handler/permission_handler.dart';

void exportToCsv(List<List<dynamic>> data) async {
  // CSV 변환 코드 생략

  PermissionStatus status = await Permission.storage.request();
  if (status.isGranted) {
    String dir = (await getExternalStorageDirectory())!.path;
    String filePath = '$dir/table_data.csv';
    File file = File(filePath);
    await file.writeAsString(csv);
  } else {
    // 권한 허용되지 않았을 때의 처리 추가
  }
}

이제 exportToCsv 함수를 호출하면, 테이블 데이터를 CSV 파일로 내보낼 수 있습니다.

위의 예시를 따라가면 플러터 Table 위젯을 사용하여 테이블 데이터를 CSV 파일로 내보내는 방법을 구현할 수 있습니다.

참고 자료