[flutter] DataTable에서 데이터를 Excel 파일로 내보내는 방법

Flutter 애플리케이션에서 DataTable을 사용하여 표 형식으로 데이터를 표시하는 경우가 많습니다. 사용자가 표 데이터를 Excel 파일로 내보내기를 원할 수도 있습니다. 이 포스트에서는 Flutter 애플리케이션에서 DataTable 데이터를 Excel 파일로 내보내는 방법에 대해 알아보겠습니다.

DataTable에서 데이터 가져오기

우선 DataTable에서 표시되는 데이터를 가져와야 합니다. 다음은 간단한 예제 코드입니다.

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyDataTable(),
    );
  }
}

class MyDataTable extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return DataTable(
      columns: const <DataColumn>[
        DataColumn(
          label: Text('Name'),
        ),
        DataColumn(
          label: Text('Age'),
        ),
      ],
      rows: const <DataRow>[
        DataRow(
          cells: <DataCell>[
            DataCell(Text('John')),
            DataCell(Text('30')),
          ],
        ),
        DataRow(
          cells: <DataCell>[
            DataCell(Text('Alice')),
            DataCell(Text('25')),
          ],
        ),
      ],
    );
  }
}

이 예제에서는 DataTable을 사용하여 이름과 나이로 구성된 간단한 데이터를 표시합니다.

데이터를 Excel 파일로 내보내기

이제 DataTable에서 가져온 데이터를 Excel 파일로 내보내는 방법에 대해 알아보겠습니다.

import 'package:flutter/material.dart';
import 'package:excel/excel.dart';
import 'dart:io';
import 'package:path_provider/path_provider.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyDataTable(),
    );
  }
}

class MyDataTable extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        ElevatedButton(
          onPressed: () {
            _exportToExcel();
          },
          child: Text('Export to Excel'),
        ),
        DataTable(
          columns: const <DataColumn>[
            DataColumn(
              label: Text('Name'),
            ),
            DataColumn(
              label: Text('Age'),
            ),
          ],
          rows: const <DataRow>[
            DataRow(
              cells: <DataCell>[
                DataCell(Text('John')),
                DataCell(Text('30')),
              ],
            ),
            DataRow(
              cells: <DataCell>[
                DataCell(Text('Alice')),
                DataCell(Text('25')),
              ],
            ),
          ],
        ),
      ],
    );
  }

  _exportToExcel() async {
    var excel = Excel.createExcel();
    Sheet sheetObject = excel['Sheet1'];

    sheetObject.appendRow(['Name', 'Age']);
    sheetObject.appendRow(['John', '30']);
    sheetObject.appendRow(['Alice', '25']);

    var bytes = excel.encode();

    String dir = (await getApplicationDocumentsDirectory()).path;
    String path = '$dir/example.xlsx';
    File(path).writeAsBytes(bytes);
  }
}

위의 코드에서는 excel 패키지를 사용하여 Excel 파일을 생성하고, DataTable에서 가져온 데이터를 해당 파일에 작성합니다. 이후, 내보낼 Excel 파일의 경로를 사용하여 로컬 디바이스에 저장합니다.

이제 위 코드를 사용하여 Flutter 애플리케이션에서 DataTable 데이터를 Excel 파일로 내보낼 수 있습니다.

위 코드의 exportToExcel 메서드에서는 Excel 파일로 데이터를 내보내는 과정을 수행합니다. 그리고 메인 위젯에는 ‘Export to Excel’ 버튼을 표시하여 사용자가 해당 기능을 실행할 수 있도록 합니다.

이제 Flutter 애플리케이션에서 DataTable 데이터를 Excel 파일로 내보내는 방법에 대한 이해를 얻었습니다. 원하는 형식으로 데이터를 표현하여 애플리케이션의 사용자 경험을 향상시키는 데 도움이 될 것입니다.

참고 자료