Flutter: How can I copy paste column values directly into my flutter UI from an excel spreadsheet?

Viewed 413

Is there a specific widget for this? I want to be able to open a spreadsheet on my phone (a google sheet) or an excel file, select a column containing 10-50 latitude points, and another column containing longitude points. I want to be able to paste this directly into my app and create a latlng list from it.

I've tried using Sticky Headers (below) but it will only let me paste everything into one cell at a time:

StickyHeadersTable(
          columnsLength: titleColumn.length,
          rowsLength: titleRow.length,
          columnsTitleBuilder: (i) => Text(titleColumn[i]),
          rowsTitleBuilder: (i) => Text(titleRow[i]),
          contentCellBuilder: (i, j) =>
              Container(height: 50, width: 50, child: TextField()),
          legendCell: Text('Sticky Legend'),
        ),

Is there a way to modify this to accept entire columns from another spreadsheet via copy/paste?

1 Answers

Understanding how copy/paste works in Spreadsheets

Assume there is data something like this in Spreadsheet, or MS Excel

A1  B1  C1
A2  B2  C2

When you copy this data, it will be copied as a string in following format

A1\tB1\tC1\nA2\tB2\tC2

To put this data in your table first split them into rows and then into Cells

Example -

void main() {
  String data = "A1\tB1\tC1\nA2\tB2\tC2";
  List<String> rows = data.split('\n');
  List cells = <List<String>>[];
  for (String row in rows) {
    cells.addAll(row.split('\t'));
  }
  print(cells);
  //prints: [[A1, B1, C1], [A2, B2, C2]]
}

NOTE: If you copy only one column, each item will be separated with a '\n'(New Line).

How to use solution with Flutter

Note that spreadsheets doesn't allow you to use new lines in a single cell. So when user copied a text into a cell or use \n then you can handle the data with a function and convert all data into a list as mentioned above.

Related